62
코드의 품질 CODE QUALITY Created by / Ironhee @이철희

코드의 품질 (Code Quality)

Embed Size (px)

Citation preview

Page 1: 코드의 품질 (Code Quality)

코드의 품질CODE QUALITY

Created by / Ironhee @이철희

Page 2: 코드의 품질 (Code Quality)

명품이라 불리는 제품들은 공통점이 있습니다.

Page 3: 코드의 품질 (Code Quality)

잘 동작합니다. 또한,

Page 4: 코드의 품질 (Code Quality)

부품 하나하나에는정성과 철학이 담겨있고,

Page 5: 코드의 품질 (Code Quality)

그러한 부품들의 결합은예술로 느껴지기까지 합니다.

Page 6: 코드의 품질 (Code Quality)

우리는 품질이 높다고 말합니다.

Page 7: 코드의 품질 (Code Quality)

소프트웨어는 어떨까요?

Page 8: 코드의 품질 (Code Quality)

GMAIL

Page 9: 코드의 품질 (Code Quality)

STARCRAFT

Page 10: 코드의 품질 (Code Quality)

이러한 소프트웨어들에도 공통점이 있습니다.

Page 11: 코드의 품질 (Code Quality)

코드가 잘 동작할 뿐만 아니라잘 정돈되어 있습니다.

Page 12: 코드의 품질 (Code Quality)

즉 코드의 품질이 높습니다.

Page 13: 코드의 품질 (Code Quality)

코드를 제대로 짜지 않는다면...

Page 14: 코드의 품질 (Code Quality)

코드를 수정하거나 추가하기 힘들어집니다.

Page 15: 코드의 품질 (Code Quality)

코드를 이해하기 힘들어집니다.

Page 16: 코드의 품질 (Code Quality)

팀원들에게 비난받을수 있구요.

Page 17: 코드의 품질 (Code Quality)

당신의 코드를 본 팀원은 질문을 할 겁니다.

Page 18: 코드의 품질 (Code Quality)

그리고 야근을 합니다.

Page 19: 코드의 품질 (Code Quality)

코드의 품질을 높이는 방법

Page 20: 코드의 품질 (Code Quality)

반복하지 않기Don't Repeat Yourself

Page 21: 코드의 품질 (Code Quality)

같은 코드가 중복된다면,수정도 여러번해야 한다.

Page 22: 코드의 품질 (Code Quality)

Example Data<ul> <li class="item" data-id="5">Lee</li> <li class="item" data-id="3">Kim</li> <li class="item" data-id="15">Hong</li></ul>

Page 23: 코드의 품질 (Code Quality)

BADfunction removeItem (id) { $('.item[data-id="' + id + '"]').remove();}

function updateItemText (id, text) { $('.item[data-id="' + id + '"]').html(text);}

Page 24: 코드의 품질 (Code Quality)

GOODfunction getItem (id) { return $('.item[data-id="' + id + '"]');}

function removeItem (id) { getItem(id).remove();}

function updateItemText (id, text) { getItem(id).html(text);}

Page 25: 코드의 품질 (Code Quality)

한가지만 하기Do One Thing

Page 26: 코드의 품질 (Code Quality)

함수는 한 가지를 해야한다.그 한가지를 잘해야 한다.그 한가지만을 해야 한다.

Page 27: 코드의 품질 (Code Quality)

BAD// ... some codeisEdible: function () { if (this.expirationDate > Date.Now() && this.approvedForConsumption === true && this.inspectorId !== null) { return true; } else { return false; }}

Page 28: 코드의 품질 (Code Quality)

GOOD// ... some codeisEdible: function () { return this.isFresh() && this.isApproved() && this.isInspected();}

Page 29: 코드의 품질 (Code Quality)

의미있게 이름짓기Reasonable Naming

Page 30: 코드의 품질 (Code Quality)

BAD// ... some codes

function checkData ( b, c ) {

return a[ b ][ c ].booleanData1 === true;

}

Page 31: 코드의 품질 (Code Quality)

GOOD// ... some codes

function getCell( map, x, y ) {

return map[ x ][ y ];

}

function hasBomb ( cell ) {

return cell.hasBomb === true;

}

Page 32: 코드의 품질 (Code Quality)

지뢰찾기에서 사용되는 코드입니다. Game Options Help

Page 33: 코드의 품질 (Code Quality)

나쁜 주석 피하기Avoiding Bad Comment

Page 34: 코드의 품질 (Code Quality)

나쁜 코드에 주석을 달지 마라.새로 짜라.

Page 35: 코드의 품질 (Code Quality)

BAD/*

이것은 지뢰찾기 맵에서의 한 방에 지뢰가 있는지 없는지를 확인하는 함수입니다.

======Arguments======a: 지뢰찾기 맵입니다.b: 방의 가로 좌표입니다.c: 방의 세로 좌표입니다.

*/

function checkData ( a, b, c ) {

return a[ b ][ c ].booleanData1 === true;

}

Page 36: 코드의 품질 (Code Quality)

GOODfunction getCell( map, x, y ) {

return map[ x ][ y ];

}

function hasBomb ( cell) {

return cell.hasBomb === true;

}

Page 37: 코드의 품질 (Code Quality)

라이브러리 사용하기Using Library

Page 38: 코드의 품질 (Code Quality)

우리가 구현하려는 대부분의 기능은이미 라이브러리로 구현된 경우가 많다.

Page 39: 코드의 품질 (Code Quality)

또한 문서화가 잘 되어있어,학습비용도 줄어든다.

Page 40: 코드의 품질 (Code Quality)

유지보수 또한 활발하게 이루어진다.

Page 41: 코드의 품질 (Code Quality)

개발, 문서화, 학습 비용을 상당히 아낄 수 있다.

Page 42: 코드의 품질 (Code Quality)

코딩 스타일Coding Style

Page 43: 코드의 품질 (Code Quality)

많은 사람이 코드를 작성했더라도마치 한 사람이 작성한 것처럼 보여야 한다.

Page 44: 코드의 품질 (Code Quality)

JQUERY JAVASCRIPT STYLE GUIDE// Badvar foo = true;var bar = false;var a;var b;var c;

// Goodvar a, b, c, foo = true, bar = false, arr = [ a, b, c ];

Full

Page 45: 코드의 품질 (Code Quality)

AIRBNB JAVASCRIPT STYLE GUIDE// badvar items = getItems(), goSportsTeam = true, dragonball = 'z';

// goodvar items = getItems();var goSportsTeam = true;var dragonball = 'z';

Full

Page 46: 코드의 품질 (Code Quality)

자신의 팀에 맞는,하나의 코딩 스타일 가이드를 선택합시다.

Page 47: 코드의 품질 (Code Quality)

테스트 주도 개발Test-Driven Development

Page 48: 코드의 품질 (Code Quality)

테스트를 먼저 짜고, 코드를 작성하는 개발 방법.

Page 49: 코드의 품질 (Code Quality)

자세한내용은 켄트벡의 TDD 검색하기!

Page 50: 코드의 품질 (Code Quality)

보이스카우트 규칙Boy Scout Rule

Page 51: 코드의 품질 (Code Quality)

캠프장은 처음 왔을 때보다더 깨끗하게 해놓고 떠나라.

Page 52: 코드의 품질 (Code Quality)

코드를 Pull 했을 때 보다,더 깨끗하게 해놓고 Push 하라.

Page 53: 코드의 품질 (Code Quality)

단순한 설계규칙 지키기simple design

Page 54: 코드의 품질 (Code Quality)

단순한 설계규칙 4가지1. 모든 테스트를 실행한다.2. DRY원칙에 따라 중복을 제거한다.3. 프로그래머 의도를 표현한다.4. 클래스와 메서드 수를 최소로 줄인다.

Page 55: 코드의 품질 (Code Quality)

한 Commit 에는 하나의 변경사항만 있어야 한다.

Page 56: 코드의 품질 (Code Quality)

코드의 품질을 어떻게 측정하죠?

Page 57: 코드의 품질 (Code Quality)

코드 품질을 측정하는 유일한 척도 = 분당 내지르는 WTF! 횟수

(WTF: What The F**k)

Page 58: 코드의 품질 (Code Quality)

팀에게 존경받는 개발자가 되고싶나요?

Page 59: 코드의 품질 (Code Quality)

팀에게 고통을 주고싶나요?

Page 60: 코드의 품질 (Code Quality)

당신에게 달려있습니다.

Page 61: 코드의 품질 (Code Quality)

감사합니다