وداعا كود نظيف



كان وقت متأخر من المساء.

كتب زميلي للتو رمزًا للمستودع الذي كان يعمل عليه لمدة أسبوع. ثم قمنا بإنشاء محرر رسومي ، وفي الكود الجديد ، قمنا بتطبيق القدرة على تغيير الأشكال في مجال العمل. الأشكال ، على سبيل المثال ، المستطيلات والأشكال البيضاوية ، يمكن تعديلها عن طريق تحريك علامات صغيرة موجودة عند أطرافها.

عملت رمز.

ولكن كان هناك العديد من الهياكل المتكررة من نفس النوع. كان لكل شكل (مثل المستطيل نفسه أو البيضاوي) مجموعة مختلفة من العلامات. يؤثر نقل هذه العلامات في اتجاهات مختلفة على موضع الشكل وحجمه بطرق مختلفة. وإذا كان المستخدم ، أثناء تحريك العلامات ، مضغوطًا على مفتاح Shift ، فعلينا أيضًا الحفاظ على نسب الرقم عند تغيير حجمه. بشكل عام ، كان هناك الكثير من العمليات الحسابية في الكود.

بدا الكود المعني مثل هذا:

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/ar484610/


All Articles