소프트웨어 개발 모범 사례(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
andresume
.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 inword
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 thelocalStrorage
.// 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 theitems
variable is representing two thingsJSON.parse(localStorage.getItem("Items"))
and an empty array[]
. Theitems
variable only returns an empty array[]
whenJSON.parse(localStorage.getItem("Items"))
is falsy which is exactly the same as the using theif-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에 연결하십시오.
Reference
이 문제에 관하여(소프트웨어 개발 모범 사례(DRY, KISS 및 YAGNI)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/desmondowusudev/best-practicesdry-kiss-and-yagni-2a60텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)