나는 Stackoverflow에 대해이 질문을했고, 그것이 무효화되기 전에 Péter Török 으로부터이 게시물을 게시하기에 더 좋은 곳이라는 유용한 제안을 받았습니다.
나는 몇 년 동안 Java로 프로그래밍 해왔다. 나는 종종 ‘좋은 스타일’을 구성하는 것에 기초하여 동료들과 디자인 결정을 논의했습니다. 실제로, ‘좋은 스타일’인지에 따라 디자인을 논의하는 많은 StackOverflow 질문 / 답변이 있습니다.
그러나 ‘좋은 스타일’을 만드는 것은 무엇입니까? 많은 것들과 마찬가지로, 나는 그것을 볼 때 그것을 알고 있지만 …이 디자인이 옳지 않다고 말하는 양심보다 더 나은 아이디어를 원했습니다.
훌륭하고 잘 설계된 코드를 생성하기 위해 어떻게 생각하십니까?
( ‘좋은 스타일’은 현재의 과제에 달려 있기 때문에 이것은 다소 주관적이라는 것을 인정합니다). 또한 팀 스타일에는 관심이 없다고 덧붙여 야합니다. 예를 들어 “우리는 4 개가 아닌 2 칸 들여 쓰기를 사용합니다”그리고 Java 코드 규칙에는 관심이 없습니다.
편집 : 지금까지 좋은 답변 / 의견에 감사드립니다. 나는 프로그래머의 양심 (그리고 아마도 위)을 만드는 것들을 체계화하는 데 도움이되는 답변에 특히 열중하고 있습니까?
답변
몇 가지 간단한 요점 :
- 의도를 밝히는 이름
- 비 교육적인 코멘트가 없습니다
- 복잡성이 너무 높아서 한 번에 머리에 맞지 않는 방법은 없습니다.
- 단일 책임 객체
- 코드 규칙을 따르십시오 (관심하지 않는다고 말했지만 매우 중요합니다).
답변
Ryan의 목록에 추가 :
- SOLID 원칙을 따르십시오
- 코드에 순환 복잡성 이 너무 많지 않은지 확인
- 테스트 주도 Java는 항상 좋은 것입니다
- 당신이있는 경우
xFactoryFactory
클래스를, 당신은 잘못을하고 있어요 - 자바 생태계의 오픈 소스 라이브러리를 고려할 때 바퀴를 재발 명하는 것은 나쁜 스타일입니다.
- 날짜 및 시간에 Joda 시간 사용
나는 거기서 멈출 것이다.
답변
다른 사람들의 답변을 이해하는 동안 좋은 코드를 작성할 때 생각할 몇 가지 사항 만 공유하는 것이 공평하다고 생각했습니다.
-
이 클래스 / 메소드 / 변수에 대해 알아야 할 것은 무엇입니까? 즉이 지식은 어디에 살아야 하는가?
-
이 코드는 애플리케이션의 메모리 / 성능에 어떤 영향을 줄 수 있습니까? ( ‘초기 최적화는 모든 악의 근원’이라는 것을 인정합니다. 따라서 많은 시간을 최적화하는 것이 아니라 처음에는 코드를 작성하는 동안 의식을 제안하는 것이 좋습니다.)
-
(코드 및 코드 구조에서) 이것이 무엇입니까? (나는 사람들이 이해하지 못하도록 노력하고 사람들이 오해하는 것을 불가능하게하려고 노력한다 “라는 격언을 따르려고 노력한다.
답변
적절한 Java 프로그래밍의 훌륭한 예를 보려면 String 및 ArrayList 클래스를 읽으십시오. 그러나 그들은 거의 간결하고 거의 C 스타일이며, 최소한의 Java 문서가있는 유지 관리 가능한 코드에 반드시 적합하지는 않습니다. 내 상점의 일반적인 관행은 주석이 없으므로 상세한 camelCase var 이름을 사용하고 한 줄의 생각을 다른 줄과 구분하기 위해 줄 바꿈을 과도하게 사용하여 코드로 주석을 작성하려고합니다. 나는 여전히 탭을 사용하여 변수를 값과 분리하는 것에 대해 토론합니다. 탭은 가독성, IMO를 향상시킬 수 있지만 최소한으로 만 수행하면 매우 주관적입니다. 관객에 관한 것입니다. 여기에 가장 좋은 대답은 없습니다.