Selamat tinggal kode bersih



Itu sudah larut malam.

Kolega saya baru saja menulis kode ke repositori yang telah dia kerjakan selama seminggu. Kami kemudian membuat editor grafis, dan dalam kode baru kami menerapkan kemampuan untuk mengubah bentuk di bidang kerja. Bentuk, misalnya, persegi panjang dan oval, dapat dimodifikasi dengan memindahkan spidol kecil yang terletak di ujungnya.

Kode itu berfungsi.

Tetapi ada banyak struktur berulang dari jenis yang sama. Setiap bentuk (seperti persegi panjang atau oval yang sama) memiliki satu set penanda yang berbeda. Memindahkan penanda ini ke arah yang berbeda memengaruhi posisi dan ukuran gambar dengan cara yang berbeda. Dan jika pengguna, sambil menggerakkan marker, menahan tombol Shift, kami juga harus menjaga proporsi gambar ketika mengubah ukurannya. Secara umum, ada banyak perhitungan dalam kode.

Kode yang dimaksud terlihat seperti ini:

let Rectangle = {
  resizeTopLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeTopRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeBottomLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeBottomRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },
};

let Oval = {
  resizeLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeTop(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeBottom(position, size, preserveAspect, dx, dy) {
    // 10   
  },
};

let Header = {
  resizeLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },  
}

let TextBlock = {
  resizeTopLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeTopRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeBottomLeft(position, size, preserveAspect, dx, dy) {
    // 10   
  },
  resizeBottomRight(position, size, preserveAspect, dx, dy) {
    // 10   
  },
};

, , .

.

, . , Oval.resizeLeft() , , Header.resizeLeft(). , , .

, . , Oval.resizeLeft() Oval. — . Rectangle, Header TextBlock, .

.

, - . — :

let Directions = {
  top(...) {
    // 5   
  },
  left(...) {
    // 5   
  },
  bottom(...) {
    // 5   
  },
  right(...) {
    // 5   
  },
};

let Shapes = {
  Oval(...) {
    // 5   
  },
  Rectangle(...) {
    // 5   
  },
}

, :

let {top, bottom, left, right} = Directions;

function createHandle(directions) {
  // 20  
}

let fourCorners = [
  createHandle([top, left]),
  createHandle([top, right]),
  createHandle([bottom, left]),
  createHandle([bottom, right]),
];
let fourSides = [
  createHandle([top]),
  createHandle([left]),
  createHandle([right]),
  createHandle([bottom]),
];
let twoSides = [
  createHandle([left]),
  createHandle([right]),
];

function createBox(shape, handles) {
  // 20  
}

let Rectangle = createBox(Shapes.Rectangle, fourCorners);
let Oval = createBox(Shapes.Oval, fourSides);
let Header = createBox(Shapes.Rectangle, twoSides);
let TextBox = createBox(Shapes.Rectangle, fourCorners);

, , , . ! . , , , , .

( ). master , , «» .


… , .

, . . — . .

, , .


« » — , . , - , . , , , .

, , , . , . . , , : « , ». , .

, , . , , , . . . - , — , . , «».

, «», , , :

  • -, , . , . ( ), — . . — .
  • -, . . . , . . «» .

, «» ? . , «» «». - ? - , , ? , , ? , ?

, , . , — , , , .

— . , , , . , , , , . , . .

. . — . — - , . , , , , . 

. — .

! « »?

Source: https://habr.com/ru/post/id484610/


All Articles