클린 코드란?
- 가독성이 좋은 코드
- 성능이 좋은 코드
- 안정성이 좋은 코드
- 코드는 이해하기 쉬워야 한다.
- 코드는 다른 사람이 그것을 이해하는 데 들이는 시간을 최소화 하여야 한다
- 이해를 위한 시간을 최소화 하는 것이 더 좋은 목표이다.
if(data.before(SUMMER_START)||date.after(SUMMER_END))
//여름이 아니면
charge=quantity*_winterRate+_winterServiceCharge;
//겨울 비용을 부과한다.
else
//여름이면
charge=quantity*_summerRate;
//여름 비용을 부과한다.
if(isSummer()){
charge=getSummerCharge();
}
else{
charge=getWinterCharge();
}
자바에서는 메소드/생성자 내에서만 if 문을 쓸 수 있음!

깨진 유리창 법칙
깨진 유리창 하나를 방치해 두면, 그 지점을 중심으로 범죄가 확산되기 시작한다는 이론
코드는 시간이 지남에 따라 지저분한 코드가 되며, 이는 "깨진 유리창 법칙"과 유사한 원리로 설명될 수 있습니다. 초기에는 작은 결함이나 비일관성이 눈에 띄지 않을 수 있지만, 이를 방치하면 점차 더 큰 문제로 발전하게 된다.
워드 커닝엄
코드를 읽으며 짐작했던 기능을 각 루틴이 그대로 수행한다면 클린 코드라 불러도 되겠다.
코드가 그 문제를 풀기 위한 언어처럼 보인다면 아름다운 코드라 불러도 되겠다.
면접 질문
- 클린 코드 책 아세요?
- 우리 회사 코드가 클린코드 책과 다르게 적혀있으면 어떻게 하실건가요?
이 책이 정답이 아니기 때문에 회사 내에 룰을 따르는게 먼저다..!
//boolean e=false;
boolean isExpired=false; =>조건문(if(isExpire)){...)
//가장 최근 비밀번호 변경 날짜로부터 로그인한 현재까지의 날짜 차이 수
//ind d;
int daysSinceLastChangePassword
//public List<String> retrieveAuListUser(Data inputData) throws Exception
public List<String> retrieveAuThorityIdsForUser (Data inputData) throws Exception
//MultiData userList
MultiData users;//userMap userSet
//MultiData auList
MultiData authorities;
//List<String> idList
List<String> authorityIds;
//String tmp=user.getName();
//tmp+=" "+user.getTelNumber();
//tmp+=" "+user.getEmail();
//template.set("userInfo", tmp);
String userInfo=user.getName();
.
.
.
//불필요한 단어(Info, Data) 추가 지양
//Customer customerInfo=CommonResource.get..
//Account accountData=CommonResource.get..
Customer customer=CommonResource.get..
Account account=CommonResource.get..
//public void genymdhms();
//YYYYMMDD
public void generateDateTime();
치킨집
매장이름: String
매장오픈일: Date
사장님이름: String
매장정보출력():void
주문접수():void
주문거절():void
public class ChickenStore{
String name;
Date openDate;
String ownerName;
public void toString(){
}
public void acceptOrder(){
}
public void rejectOrder(){
}
}
//assert((!(bucket=findBucket(key)) || !bucket.isOccupied());
||(또는 ) 연산자는 앞 조건이 True이면 뒤를 볼 필요가 없다.
Bucket bucket=findBucket(key);
if(bucket!=null){
assert(!bucket.isOccupied());
}
//set메소드는: userName 변수에 아무런 값이 없으면, "홍길동"을 넣고, 있으면 반환
if(set(userName, "홍길동")){//userName에 "홍길동"이라는 이름을 넣자?! NO!}
//아래와 같이 값을 조회하는 메소드와 저장하는 메소드로 역할을 분리해야함
if(existAttribute(userName)){
setAttribute(userName, "홍길동");
}
가능하면 메소드를 최대한 빨리 반환하는 것이 좋다.
public boolean checkContain(String, fullString, String subString){
//boolean isFull=false;
if(fullString==null ||subString==null){
return false;
}
if("".equals(subString){
return ture;
}
//return isFull;
}
중복 코드는 없애세요!
결론
처음부터 완벽한 소스코드를 작성하는 사람은 아무도 없다.
그냥 완벽한 코드도 없다. 누군가에게는 다른 시선이 존재하기 때문이지~
이유를 제시하고 설득할 수 있으면 가능하다.
처음부터 클린코드를 짜겠다는 생각보다는 리팩토링하겠다는 생각을 하자
그렇다면 처음부터 클린코드를 염두에 두며 코드를 짜게 될 것이다!