소프트웨어 개발 모범 사례(DRY, KISS 및 YAGNI)

DRY, KISS, YAGNI란?



이는 깨끗한 코드를 작성하기 위한 일반적인 모범 사례 및 모범 원칙의 약어일 뿐입니다. 이 기사에서는 이것이 무엇을 의미하고 왜 중요한지 논의할 것입니다. 먼저 "명확한 코드가 중요한 이유"에 대해 논의해 보겠습니다.

소프트웨어 개발에서 깨끗한 코드의 중요성.



Would be great to know why it's important to make code easier to maintain and understandable. Would be great to cover some of the background of it. E.g. code is much more often read compared to written. It helps when working in teams. It helps other engineers to get quicker in context. Clean code improves code quality and gives confidence in software development.



이제 작업 중인 언어와 관계없이 커뮤니티에서 채택한 원칙에 대해 알아보겠습니다. 가장 인기있는 것 중 일부는 다음과 같습니다.

마른



DRY는 단순히 (반복하지 마십시오!)를 의미합니다. 이 원칙은 분명히 우리가 중복 코드를 피하도록 노력해야 함을 의미합니다. 대신 가능하면 코드를 재사용해야 합니다.

이를 명확히 하기 위해 이 시나리오에 대해 논의하겠습니다.

A student was asked to write a JavaScript program to reverse two words begins and resume.

Student code

// reverse "begins"
const reverseBegins = () => {
   const reverseWord = "begins".split('').reverse().join('');
   return reverseWord;
}
console.log(reverseBegins()) // prints snigeb

// reverse "good"
const reverseGood = () => {
   const reverseWord = "good".split('').reverse().join('');
   return reverseWord;
}
console.log(reverseGood()) // prints doog
  • Did the Student follow DRY?

No

  • Why the student didn't follow DRY

Explanation: This student code works perfectly as expected but it duplicates a block of code that performs the same function hence the code above does not obeys the DRY principle. Assume how complicated and duplicated the above code will be if the student were asked to reverse five(5) words.😂

  • How can this student improve the code to make it DRY?

The student can use a function with a parameter. So whenever the student wants to reverse a word, the student can pass the word as a parameter when the function is called. For instance, In the code below, a function called reverseWord takes in word as a parameter which reverses any word that will be passed as a parameter when the function is called. So it now will be simple when I have to reverse five(5) words as compared to the student code.

// reverse word function
const reverseWord = (word) => {
    const reverseWord = word.split('').reverse().join('');
    return reverseWord;
}
console.log(reverseWord("begins")) // prints snigeb
console.log(reverseWord("good")) // prints doog


키스



KISS는 (Keep It Simple, Stupid)를 의미합니다. KISS는 단순히 불필요한 복잡성을 피하려고 노력해야 하고 코드를 과도하게 엔지니어링해서는 안 되며 추가 설명이 없어야 함을 의미합니다. 코드는 간단하고 작고 이해하기 쉬워야 합니다.

Let's see if the JavaScript code below which gets and returns items from the localStrorage of the browser but returns an empty array if there are no items in the localStrorage.

// get items from localStorage function
const getItemsFromStore = () => {
    const items = JSON.parse(localStorage.getItem("Items"))
    if (!items) {
        return [];
    } else {
        return items;
    }
}

I understand, if someone says nothing is wrong with this code but let's realize that the use of if-function in this code makes it complicated and long.

The code below is simple, small, and easy to understand which follows the KISS principle because it far away from been complicated.
In the code below the items variable is representing two things JSON.parse(localStorage.getItem("Items")) and an empty array []. The items variable only returns an empty array [] when JSON.parse(localStorage.getItem("Items")) is falsy which is exactly the same as the using the if-statement to check if it’s falsy.

// get items from localStorage function
const getItemsFromStore = () => {
    const items = JSON.parse(localStorage.getItem("Items")) || [];
    return items;
}


야그니



YAGNI는 완전히 (You Are n't Gonna Need It)을 의미합니다. YAGNI 원칙에 따르면 엄격하게 필요하지 않은 항목을 추가해서는 안 됩니다. 기능은 실제로 필요하다는 것이 분명한 경우에만 프로그램에서 구현되어야 합니다. 미래에 유용할 수 있다고 생각하기 때문에 최신 기술을 추가하려는 유혹을 피하십시오. 정말 필요할 때 점진적으로 추가하십시오.

읽어주셔서 감사합니다. 연결해 봅시다!



제 블로그를 읽어주셔서 감사합니다. 언제든지 내 이메일 뉴스레터를 구독하고 또는 Facebook에 연결하십시오.

좋은 웹페이지 즐겨찾기