Java에서 "좋은 스타일"을 만드는 것은 무엇입니까? [닫은]


9

나는 Stackoverflow에 대해이 질문을했고, 그것이 무효화되기 전에 Péter Török 으로부터이 게시물을 게시하기에 더 좋은 곳이라는 유용한 제안을 받았습니다.

나는 몇 년 동안 Java로 프로그래밍 해왔다. 나는 종종 '좋은 스타일'을 구성하는 것에 기초하여 동료들과 디자인 결정을 논의했습니다. 실제로, '좋은 스타일'인지에 따라 디자인을 논의하는 많은 StackOverflow 질문 / 답변이 있습니다.

그러나 '좋은 스타일'을 만드는 것은 무엇입니까? 많은 것들과 마찬가지로, 나는 그것을 볼 때 그것을 알고 있지만 ...이 디자인이 옳지 않다고 말하는 양심보다 더 나은 아이디어를 원했습니다.

훌륭하고 잘 설계된 코드를 생성하기 위해 어떻게 생각하십니까?

( '좋은 스타일'은 현재의 과제에 달려 있기 때문에 이것은 다소 주관적이라는 것을 인정합니다). 또한 팀 스타일에는 관심이 없다고 덧붙여 야합니다. 예를 들어 "우리는 4 개가 아닌 2 칸 들여 쓰기를 사용합니다"그리고 Java 코드 규칙에는 관심이 없습니다.

편집 : 지금까지 좋은 답변 / 의견에 감사드립니다. 나는 프로그래머의 양심 (그리고 아마도 위)을 만드는 것들을 체계화하는 데 도움이되는 답변에 특히 열중하고 있습니까?


여기에 나열된 많은 다른 것들 중에서, 컴퓨터가 코드를 작성하는 방식에 관계없이 코드를 컴파일 할 수 있다고 명시해야하지만 궁극적으로 코드는 사람이 읽을 수 있어야 합니다. 미친 것 같은 코멘트! 사용하려면 좋은 시험 전 : 사람이 읽을 수 에만 코드가, 그것의 입력과 출력이 있어야 할 무엇, 그리고 알고리즘 (들)을 수행하는 데 사용 무엇을 배울 내 의견을?
Brian

1
@ brian, 코드가 방법을 설명하도록하십시오 . 이유 를 설명하기 위해 실제 의견을 남겨 주십시오. 다시 말해서, 미친 것 같은 말을하지 마십시오 (일반적인 경우)

4
Brian :이 기술은 확실히 좋은 습관으로 간주되지 않습니다. 일반적인 모범 사례는 "방법"이 아니라 "이유"를 설명하는 주석과 함께 코드를 가능한 한 자체 문서화 (명료 한 변수 이름과 함수 응집력)로 만드는 것입니다. 사람들이 코드보다 주석을 유지할 가능성이 적기 때문에 모든 작은 세부 사항을 설명하는 주석은 일반적으로 산만하고 위험한 것으로 간주됩니다.
Casey Patton

1
@ 브라이언 : 마지막 진술은 모든 것을 말합니다. 코드를 읽을 수 있어야합니다. 댓글이 오래되었습니다. 코드는 절대하지 않습니다. 주석이 필요하다고 생각되면 코드가 명확해질 때까지 리팩토링하여 주석이 코드의 내용을 반복합니다. 유일하게 좋은 의견은 제 3 자 라이브러리의 버그를 피하는 것과 같이 코드가 특정 방식으로 작동하는 이유를 알려주므로 누군가가 돌아 가지 않고 이유가없는 것으로 변경되지 않도록합니다. 그것은 즉시 명백하지 않습니다.
라이언 스튜어트

2
나는 공식적으로 겸손했습니다. @amaidment가 죄송합니다. 의견에 관해서는 좋은 코딩 표준을 연구해야한다고 생각합니다.
Brian

답변:


17

몇 가지 간단한 요점 :


3
+1. 아마도 가장 중요한 것은 중복 코드를 최소화하는 것입니다. 몇 개 이상의 토큰을 잘라 붙여 넣으려는 경우 함수를 추출해야합니다. 함수가 한 줄의 코드 인 경우에도 마찬가지입니다.
케빈 클라인

4
중복 코드에서는 다음과 같은 입장을 취합니다. 잘라 붙여 넣기 = 괜찮습니다. 그냥 코드를 옮기는 것입니다 (붙여 넣기를 한 번 사용한다고 가정). 복사하여 붙여 넣기 = 끔찍합니다. 어휘에서 복사 버튼을 제거하면 올바른 일을 할 가능성이 높습니다.
jsternberg

@jsternberg : 잘라 내기 / 복사 구별을 위해 +1이지만 "복사 / 붙여 넣기"를 의미 할 때 많은 사람들이 "잘라 내기 / 붙여 넣기"라고 말합니다. 구별이 어떻게 사라 졌는지 모르겠습니다.
라이언 스튜어트

5
반복하지 마십시오. 반복하지 마십시오. 반복하지 마십시오.
구성자

1
@configurator, 당신은 약간 웃기는 냄새가 ...

9

Ryan의 목록에 추가 :

  • SOLID 원칙을 따르십시오
  • 코드에 순환 복잡성 이 너무 많지 않은지 확인
  • 테스트 주도 Java는 항상 좋은 것입니다
  • 당신이있는 경우 xFactoryFactory클래스를, 당신은 잘못을하고 있어요 :-)
  • 자바 생태계의 오픈 소스 라이브러리를 고려할 때 바퀴를 재발 명하는 것은 나쁜 스타일입니다.
  • 날짜 및 시간에 Joda 시간 사용

나는 거기서 멈출 것이다.


2
그러나 HammerFactoryFactoryFactory수업은 어떻습니까? ;-)
Wayne Molina

@ 웨인 (Wayne), 공장은 일부 결정이 지연 될 필요가 있음을 나타내며 FactoryFactoryFactories는 실제로 런타임에 결정해야했지만 불가능한 결정이 있음을 나타냅니다.

나는 알고 싶었고, 당시 J2EE가 HammerFactories 및 HammerFactoryFactories와 함께 지나치게 복잡했던 이유에 대한 기사를 참조하고 있으며 HammerFactoryFactoryFactories라고 생각합니다. :)
Wayne Molina

@Martijn-SOLID 링크에 감사드립니다. 나는 전에 그것을 보지 못했다. JodaTime을 사용하는 것이 좋습니다. 이것은 Java Calendar / Date 클래스에 대한 (적절한) 혐오입니까? JSR310 (JodaTime의 후속)은 어떻습니까?
amaidment

JSR-310은이를 Java 8로 만들어 줄 것입니다 (우리가 많은 것을 시도하고 도와 주려고 노력하고 있습니다. 한편, Joda 시간은 Java에서 날짜 및 시간을 처리하기위한 사실상의 표준입니다. Java의 날짜 및 달력 시스템에 잘못된 점이 너무 많아서 어디서부터 시작 해야할지 모르겠습니다. ;-). 킬러는 날짜가 변경 가능하고 순간이나 기간에 대한 개념이 없다는 것입니다.
Martijn Verburg

1

다른 사람들의 답변을 이해하는 동안 좋은 코드를 작성할 때 생각할 몇 가지 사항 만 공유하는 것이 공평하다고 생각했습니다.

  • 이 클래스 / 메소드 / 변수에 대해 알아야 할 것은 무엇입니까? 즉이 지식은 어디에 살아야 하는가?

  • 이 코드는 애플리케이션의 메모리 / 성능에 어떤 영향을 줄 수 있습니까? ( '초기 최적화는 모든 악의 근원'이라는 것을 인정합니다. 따라서 많은 시간을 최적화하는 것이 아니라 처음에는 코드를 작성하는 동안 의식을 제안하는 것이 좋습니다.)

  • (코드 및 코드 구조에서) 이것이 무엇입니까? (나는 사람들이 이해하지 못하도록 노력하고 사람들이 오해하는 것을 불가능하게하려고 노력한다 "라는 격언을 따르려고 노력한다.


1

적절한 Java 프로그래밍의 훌륭한 예를 보려면 String 및 ArrayList 클래스를 읽으십시오. 그러나 그들은 거의 간결하고 거의 C 스타일이며, 최소한의 Java 문서가있는 유지 관리 가능한 코드에 반드시 적합하지는 않습니다. 내 상점의 일반적인 관행은 주석이 없으므로 상세한 camelCase var 이름을 사용하고 한 줄의 생각을 다른 줄과 구분하기 위해 줄 바꿈을 과도하게 사용하여 코드로 주석을 작성하려고합니다. 나는 여전히 탭을 사용하여 변수를 값과 분리하는 것에 대해 토론합니다. 탭은 가독성, IMO를 향상시킬 수 있지만 최소한으로 만 수행하면 매우 주관적입니다. 관객에 관한 것입니다. 여기에 가장 좋은 대답은 없습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.