본문 바로가기

객체지향4

[클린코드] 5 ~ 10장 1. 클래스 200줄 넘기지 않기 2. 외부 클래스 바로 의존하지 않고 경계 클래스 두기 나쁜 예) Map sensors = SensorsFactory().get(); // 외부 라이브러리 Sensor s = sensors.get(sensorId); 좋은 예) public class Sensors { private Map sensors = SensorsFactory().get(); public Sensor getById(String id) { return sensors.get(id); } // 이하 생략 } 3. 코드에 유연성, 유지보수성, 재사용성을 제공하는 버팀목이 바로 단위 테스트이다. 테스트 케이스가 있다면 공포는 사실상 사라진다. 테스트 커버리지가 높을수록 공포는 줄어든다. 4. 테스트 당 as.. 2024. 3. 4.
[클린코드] 4. 주석 1. 로직에 대한 설명을 주석으로 담지 마라 주석은 나쁜 코드를 보안하지 못한다. 주석으로 설명해야만 하는 코드는 나쁜 코드이다. 리팩토링을 고려하라. 2. 날짜에 대한 리턴타입을 제공하는 주석은 달아라 //kk:mm:ss EEE, MMM dd, yyyy 형식이다. Pattern timeMathcher = Pattern.compile( "||d*:||d||:d* ||w*, ||w* ||d*, ||d*"); 3. 코드로 설명할 수 있으면 주석을 달지마라. //기본 생성자 protected AnnaualDateRule() {} // this.closed가 true일 때 반환되는 유틸리티 메소드다. // 타임아웃에 도달하면 예외를 던진다. public synchronized oid waitForClose(fi.. 2024. 3. 4.
[클린코드] 3.함수 1. 함수 내에 추상화 레벨을 같게 한다. 추상화 수준이 높음. getHtml() getFile() 추상화 수준이 중간. String pagePathName = PathParser.render(pagepath) 추상화 수준이 낮음. .append("\n") 어느 정도까지 구현되어 있는지 헷갈리지 않게, 함수 내에 추상화 레벨이 같은 메소드들을 만든다. 2. 플래그 인수를 전달하지 마라. 함수로 boolean 값을 전달하는 것은, 대놓고 함수가 여러 가지 기능을 처리한다는 것을 나타내는 것이다. 플래그 인수를 전달하는 것이 아니라, 각각을 처리하는 함수를 따로 구현하는 것이 옳은 방법이다. 3. 인수가 3개가 넘어간다면 묶을 수 있는지 의심해봐라. Circle makeCircle(double x, doub.. 2024. 3. 4.
정순원의 코드 원칙 코드를 짜다 보면 어? 내가 이런 상황에서 어떻게 했지? 혹은 전에도 이와 같은 방법으로 코드를 짰나? 라는 의구심이 들 때가 있다. 역시나 전에 코드를 보면 지금의 코드 스타일과는 다르게 써져있다. 예를 들면 Controller에서 Service를 호출할 때 RequestDTO를 그대로 넘겨줬나 DTO를 분해해서 넘겨줬나? 엔티티를 Response로 변환할 때 어디서 책임을 맡았지? 등과 같은 생각이다. 통일성은 코드 가독성에 크게 영향을 주기 때문에 나만의 코드원칙을 세워야겠다고 다짐했다. 물론 이러한 문제들은 팀마다 규칙이 다르다. 그러더라도 나만의 기준을 세우고 지금부터라도 통일성을 갖는 연습을 하는 것이 중요하다 생각한다. 취직을 하고 팀이 생긴다면, 후에 그 팀내 규칙을 따르면 된다. 1. D.. 2024. 2. 27.