Это должен знать каждый программист и разработчик программного обеспечения

Я дам вам краткий обзор некоторых принципов разработки программного обеспечения и терминов, связанных с проектированием программного обеспечения, с кратким описанием.

К концу этого сообщения в блоге вы должны быть знакомы со следующим.

  • Что такое принцип DRY и каковы примеры из реальной жизни?
  • Что такое принцип KISS и как он применяется в реальной жизни?
  • Наконец, я воспользуюсь примером, чтобы объяснить принцип YAGNI.

Помимо шаблонов проектирования, мы придерживались некоторых принципов проектирования, таких как принципы Solid, YAGNI и Dry. В этом сообщении блога я буду использовать примеры из реальной жизни, чтобы продемонстрировать, как применять эти принципы, такие как Yagna, Dry и Solid.

Что такое хорошее программное обеспечение?

Хорошее программное обеспечение должно соответствовать следующим условиям:

  • Оперативный
  • переходный
  • Обслуживание

Почему принципы проектирования программного обеспечения

Чтобы справляться с частыми изменениями требований пользователей, нам нужны принципы проектирования программного обеспечения. Эти принципы уменьшают количество зависимостей, поэтому разработчики могут изменять одну область программного обеспечения, не затрагивая другие. Они также предназначены для облегчения понимания, поддержки и расширения проектов.

Тесная связь

Тесная связь (в общем случае) возникает, когда две вещи зависят друг от друга, т. Е. Изменение одной может повлиять на другую.

Слабая связь

Слабая связь возникает, когда две вещи зависят друг от друга, подразумевая, что изменение одной может иметь незначительное влияние или не повлиять на другую. Целью архитектуры слабой связи является снижение риска того, что изменение, внесенное в один элемент, вызовет непредвиденные изменения в других элементах.

Макет и шпион

Мок-объекты — это смоделированные объекты в объектно-ориентированном программировании, которые контролируемым образом имитируют поведение реальных объектов, чаще всего в рамках инициативы по тестированию программного обеспечения. Мок-объект обычно создается программистом для проверки поведения другого объекта.

Mock и Spy используются для подделки или имитации поведения объекта, но в шпионаже есть реальный объект, и вы просто шпионите или заглушаете определенные его методы.

1. СУХОЙ (не повторяйтесь)

Не повторяйся — это аббревиатура. Это влечет за собой рефакторинг кода, который повторно используется несколько раз. Код DRY легко изменить, так как все изменения должны быть сделаны в одном месте.

Взгляните на следующий фрагмент кода. Я проверяю четное или нечетное число в указанном массиве. Но для if(array[i] процентов 2!==0) остальная часть кода дублируется. Это явно противоречит принципу DRY.

const printOdd=(array)=>{
  for(let i=0;i<array.length;i++){
    if(array[i]%2!==0){
      console.log(array[i]);
    }
  }
}


const printEven=(array)=>{
  for(let i=0;i<array.length;i++){
    if(array[i]%2===0){
    console.log(array[i]);
    }
  }
}


printOdd([1,2,3,4,5]);
printEven([1,2,3,4,5]);

Давайте рефакторим код и применим принцип DRY.

const printNumbers=(array,cb)=>{
   for(let i=0;i<array.length;i++){
    if(cb(array[i])){
      console.log(array[i]);
    }
  }
}


printNumbers([1,2,3,4],(x)=>x%2!==0); // odd numbers

printNumbers([1,2,3,4],(x)=>x%2===0); // even numbers

2. ПОЦЕЛУЙ - Будь проще, глупец

Этот принцип гласит, что ваш код должен быть максимально простым. Вы должны избегать чрезмерного усложнения вещей. Простой код легче понять и поддерживать.

Давайте рассмотрим несколько примеров из реальной жизни, чтобы лучше понять этот принцип.

Пример 1

Я объединяю два массива в один массив в следующем фрагменте кода. Этот код хорош, но мы можем упростить его, используя новый оператор javascript.

const even = [2,4,6]
const nums = [10,12,16].concat(even); // 10,12,16,2,4,5

После применения принципа KISS

const even = [2,4,6]
const nums = [10,12,16,...even]

Мы могли бы использовать оператор распространения в любой ситуации (начало, конец, середина).

Пример 2

Пример ниже говорит сам за себя. Здесь я проверяю, определена ли переменная, и затем принимаю решение. Этот код довольно громоздкий, и мы можем упростить его, используя метод «короткого замыкания».

Short-**Код схемы-**В некоторых языках программирования второй аргумент выполняется или оценивается только в том случае, если первого аргумента недостаточно для определения значения выражения.

function checkName(name) {
  if (name === null || name === undefined || name === "") {
    console.log("name not defined!");
  } else {
    console.log(name);
  }
}
checkName();

Приведенный выше код довольно распространен, поэтому давайте применим его с пользой.

function checkName(name) {
  console.log(name || "name not defined!");
}
checkName();

3. ЯГНИ (Вам это не понадобится)

YAGNI означает «вам это не понадобится»: не внедряйте что-то до тех пор, пока в этом нет необходимости.

Даже если вы абсолютно уверены, что вам понадобится функция, позже не внедряйте ее сейчас. Обычно получается либо:

  • вам это не нужно в конце концов, или
  • то, что вам нужно, сильно отличается от того, что вы предвидели ранее.

Это не означает, что вы должны избегать гибкости в своем коде. Это означает, что вы не должны переусердствовать с чем-то, основываясь на том, что, по вашему мнению, вам может понадобиться позже.

Есть две основные причины практиковать ЯГНИ:

  • Вы экономите время, потому что не пишете код, который вам не нужен.
  • Ваш код лучше, потому что вы не загрязняете его «догадками», которые оказываются более или менее неверными, но все равно остаются.