훌륭한 프로그래머 되는 법(Becoming a Better Programmer)
좋은 프로그래머가 되기 위해서는 코드에 신경 써야 한다. 어떤 환경에서 단지 작동하는 것처럼 보이는 코딩을 거부해야 하고 올바르게 작동하는 훌륭한 코드를 짜도록 노력해야 한다.(+ 올바른 작동을 테스트하고 검증하는 테스트 환경도 갖춰야 한다)
보이는 것은 강력하다.
코드 에러를 줄이고 사이드 이펙트를 줄이려면 영리하게 짜는 것보다 명확하게 짜는 것이 더 중요하다. 읽기 어려운 코드는 작업하기 어렵다. 다른 사람을 위해 코딩하는 것을 잊지 말자
작업하기 전에 일관성에 대한 이야기를 해라.
한 번에 모든 레이어를 적용하기는 힘들다. 이후에 도입하는 것도 힘들다. 어디서부터 어디까지 변경해야 하는지 곤란하다. 이럴 땐 템플릿을 사용한다.(자동화 규격)
허술한 논리를 만들지 말라
무읨한 코드와 반복된 조건 분기문은 문제를 야기한다. 느슨한 표현보다는 명백하고 간결하게 표현하라
bool check(){
if(this.hungry()){
if(this.bannaCheck()){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
bool check(){
return (this.hungry() && this.bannaCheck());
}
코드의 최신화 하기 (죽은 코드 제거)
한 번도 호출되지 않는 함수
선언되었지만 한 번도 할당되지 않은 변수
내부 메서드에 전달되었지만 사용하지 않는 매개변수
전혀 사용되지 않는 열거형, 구조체, 클래스, 인터페이스 등등
코드 줄여 개선하기
시간이 지나서 코드는 계속 만들어지고 수정된다 그 과정에서 불필요한 코드나 방대한 코드가 생겨난다.
사용되지 않거나 불필요한 코드는 즉시 제거하자. 미래를 보고 설계하고 재구성하는 습관을 들이자.
버그 및 재설계에 두려움을 갖지 말라
기존의 코드를 돌아보면 버그와 재설계에 대한 욕망이 생길 것이다. 그때 두려워하지 말라 적절하지 않다고 느껴지는 예전의 코드를 보고 찾는 것은 좋을 일이다. 이는 더 배웠고 더 나아졌음을 의미한다. 자신감을 가져라
경로 탐색하기
데이터의 흐름을 탐색하는 과정은 매우 중요하다. 코드의 어느 부분을 봐야 하는지, 기능에 대한 품질 여부, 버그 대응 등 경로를 탐색하기 위한 방법을 마련해야 한다.
스파게티 코드 및 레거시 코드 제거하기
코드 수정은 천천히 주의 깊게 하라 하나씩 수정하라.
오류 무시하지 않기
코드에서 발생할 수 있는 모든 오류를 못하지 말라. '더 늦기 전에' 오류 처리를 미루지 말라, 자꾸 미루다 보면 더 처리하기 어려워진다.
예상치 못한 것을 예상하기
선행이 필요한 확인용 디버깅 코드를 작성하라, 오류를 사전에 방지하기 위한 방법을 고민하라.
재현이 불가능한 버그 확인하기
재현 시점에서 추론하고 실패의 케이스를 만들어라. 계속된 시도를 하다 보면 답이 보일 것이다.
테스트 코드를 만들어라
Unit tests(유닛 테스트) , Intergraation tests(통합 테스트), System tests(시스템 테스트) 등 테스트 코드를 적용해라.
----------------------------------------------------------------------------------------------------------------------------
코드는 복잡하다. 유지 보수하기 어려우면 그룹핑을 하고(권한, 역할, 타입 등등)
구조를 재설계해야 한다. 구조를 설계할 때 의존성을 최대한 낮추고 권한에 대해서 깐깐하게 관리가 되어야 한다.
좋은 코드는 강력한 응집도와, 느슨한 결합도를 지향해야 한다.
강력한 응집도 = 하나의 모듈 내에서 내부가 얼마나 유기적으로 작동하는지에 대한 척도
느슨한 결합도 : 상호 모듈 간의 의존성에 대한 지표.
코드를 배우는 방법 중 가장 좋은 방법은 실행하고 수정해보는 것이다. 그리고 실수를 통해 배워 나야가 한다.
★★★★★
'개발 > 게임) 개발관련' 카테고리의 다른 글
게임개발)테스트 케이스(Test Case : TC) (2) | 2020.07.21 |
---|---|
Tip) Power Code 적용법! (+자신감은 덤..?) (8) | 2020.07.02 |
게임개발) 갸챠(랜덤 선택연출) (8) | 2020.05.13 |
게임개발)컷신(Cut Screen) (2) | 2020.02.13 |
Tip) VSCode - Getter and Setter 생성 (0) | 2020.01.31 |
댓글