퇴고후 아래로 옮기는 중

자바 코딩의 기술 - 코딩 잘 할 수 있는

함께 1incompany 2021. 3. 23. 14:59

pragprog.com/titles/javacomp/java-by-comparison/

 

Java by Comparison

 

pragprog.com

Java By Comparison: Become a Java Craftsman in 70 Examples 1st Edition

The Pragmatic Programmers, LLC (TPP)라 봤는데, 코딩 경험이 적은 사람에게 도움될 듯. 페이지가 206쪽이라 얇아 좋음.

 

번역서가 있다.

똑똑하게 코딩하는 법/자바 코딩의 기술

2020-08-05 사이먼 하러,요르그 레너드,리누스 디에츠 지음/심지현 옮김

 

추천사 - 벤카트 수브라마니암 박사 / 애자일 개발자 주식회사 회장 2017년12월 

코드 품질(Code Quality)

코드 품질은 코드를 이해하는 데 쏟아야 할 노력에 반비례한다.

 

코드 작성을 위해 고용된 대다수 프로그래머는 동작하는 소프트웨어를 납품합니다. 평범한 프로그래머와 뛰어난 프로그래머는 후속 작업자를 얼마나 더 편하게 해주는가에서 차이가 납니다.

 

옮긴이의 말에서 책을 너무 강조한다. 프젝에 들어가 실전에서 배우는게 최고인데, 뭐 우선 이 책을 잘보란 이야기도 맞겠지만, 암묵지를 책을 통해 전달받기는 많이 힘들다. 1-2년 정도 코딩한 경험을 가진 사람이라면 이 책을 통해 좀 단단해지는 느낌, 한글판에 나온 글로는 레벨업시킬 수 있을 듯.

 

thebook.io/007025/ 1장-3장까지 읽을 수 있네요. 읽어보시고 구입하셔도 좋을 듯

 

더북(TheBook): 자바 코딩의 기술

한글판 출판사 연결

thebook.io

바보도 컴퓨터가 이해하는 코드는 작성할 수 있다.
훌륭한 프로그래머는 인간이 이해하는 코드를 작성한다. - 마틴 파울러
Any fool can write code that a computer can understand.
Good programmers write code that humans can understand. - Martin Fowler.

 

노가다(?) 했습니다. 참고 문헌 전자문서를 보는데, 책 열어두고 보기 귀찮아서 링크 다 확인했습니다. keep에 복사해두고 저만 보려고 하다가... 이런거라도^^;

 

주석

 

주석: 반갑습니다!

 

* 오라클에서 이미 자바9를 출시했습니다. 이 책의 모든 코드는 자바 9에서도 유효하니 안심하세요.

 역주 2019년 9월 자바 13이 출시되었고 오라클 사는 매년 3월과 9월에 새로운 자바 버전을 출시하고 있습니다. 2020년 3월에는 자바 14, 9월에는 자바 15가 출시될 예정입니다.  => 2020년3월23일 현재 java 16 릴리즈 됨. 11버전 이후 17버전이 장기 지원이니, 17버전 되면 또 재학습해야겠군요!

 

* http://c2.com/cgi/wiki?FizzBuzzTest 

* https://imranontech.com/2008/01/24/using-fizzbuzz-to-find-developers-who-grok-coding/ 

* https://projecteuler.net 한국사이트 http://euler.synap.co.kr/ 

* http://checkstyle.sourceforge.net/ 

* https://findbugs.sourceforge.net 

* https://github.com/spotbugs/spotbugs 

* http://errorprone.info/ 

* https://pmd.github.io 

* 명심하세요! 바보는 도구를 사용해도 바보입니다!

 

1장

* https://www.facebook.com/notes/kent-beck/mastering-programming/1184427814923414/   

2장

* https://docs.oracle.com/javase/9/docs/api/java/util/regex/Pattern.html

* 분명히 코드는 다소 불안정합니다. 메서드를 새로 작성하지 않는 한, 새로운 단위 변환은 추가하기 힘들죠. 다만 이 절은 확장성이 아닌 서식회를 다루고 있으니 일단 이 문제는 무시하겠습니다.

3장

* 위 템플릿은 지속 가능한 구조적 디자인 결정에서 발췌한 실제 과학적 추천 사항입니다. https://adr.github.io 에 템플릿이 더 있습니다.

* 역주 ADR(Architecture Decision Records)은 아키텍처 의사 결정을 뜻합니다. github 페이지에는 각 프로그래밍 언어에서 사용할 수 있는 도구와 템플릿이 제공됩니다.

* https://www.oracle.com/technetwork/articles/java/index-137868.html

* 패키지의 JavaDoc은 package-info.java 파일에 넣어야 합니다. 비슷하게 자바 9의 모듈 에도 전용 module-info.java 파일이 있습니다.

* 때로는 생성자를 일제히 숨기고 의미 있게 명명한 정적 메서드, 즉 내부적으로 흔히 팩터리 메서드로 불리는 숨겨진 생성자를 호출하는 메서드만 노출하는 것이 더 편리합니다.

4장

* https://www.oracle.com/technetwork/java/codeconventions-150003.pdf

* https://download.oracle.com/otndocs/jcp/7224-javabeans-1.01-fr-spec-oth-JSpec/

* 가능하면 이 책에서는 한정자를 쓰지 않지만 이번 절에서는 매우 중요합니다.

* http://www.bash.org/?962108

5장

* 물론 가장 구체적인 예외가 실제로 Exception이라면 Exception을 잡아도 괜찮습니다. 하지만 그러한 경우는 매우 드뭅니다.

* http://www.oracle.com/technetwork/articles/java/trywithresources-401775.html

6장

* 포괄적으로 알고 싶다면 컴퓨터 과학자가 부동소수점 연산에 대해 알아야 할 것을 읽어보세요

* https://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html

* 자바 7부터는 Character.isJavaIdentifierPart(int)를 넘겨주는 모든 유니코드 char를 쓸 수 있습니다. 그래도 메서드명에는 숫자와 글자만 사용하길 바랍니다.

* https://github.com/pholser/junit-quickcheck

* “표기 안됨”은 사실 "Klingon"이라는 단어를 뜻하는 클링온(스타트렉에 나오는 외계인)어입니다. 이 언어를 프로그램에서 지원할 일은 아마도 없겠지만 중국어나 터키어라면 어떨 까요? 이러한 언어에 대해서도 프로그램이 잘 동작하나요?

7장

* https://martinfowler.com/bliki/ValueObject.html

8장

* https://martinfowler.com/articles/collection-pipeline/

* https://docs.oracle.com/javase/9/docs/api/java/util/stream/package-summary.html#StreamOps

* https://docs.oracle.com/javase/9/docs/api/java/util/stream/Stream.html

9장

* https://spotbugs.github.io/ 

* https://spotbugs.readthedocs.io/en/latest/bugDescriptions.html

* http://checkstyle.sourceforge.net/ 

* https://pmd.github.io/

* http://errorprone.info

* https://bugs.openjdk.java.net/browse/JDK-8176402 

* https://www.jetbrains.com/help/idea/code-inspection.html

* 애자일 프로세스에 관심이 있다면 로버트 마틴이 쓴 〈Agile Software Development, Principles, Patterns, and Practices〉(Pearson, 2002)을 추천합니다

* https://google.github.io/styleguide/javaguide.html

* https://github.com/google/google-java-format

* https://gradle.org/

* https://maven.apache.org/

* http://ant.apache.org/

* https://jenkins.io/

* https://www.sonarqube.org

* https://travis-ci.org/

* https://www.codacy.com/

* https://www.elastic.co/products

* https://airbrake.io/

* https://sentry.io

* https://logging.apache.org/log4j/2.x/ 에서 받을 수 있습니다. 대중적인 로깅 퍼사드 인 SLF4J(slf4j. org)도 지원합니다.

* https://www.w3.org/International/questions/qa-personal-names.en

* https://www.wired.com/2015/11/null

* https://github.com/kdeldycke/awesome-falsehood