๐ŸŽ ์ž๋ฐ” ์ฝ”๋“œ Conventions ๐ŸŽ

10284 ๋‹จ์–ด JavaJava

์ข‹์€ ๊ฐœ๋ฐœ์ž๋กœ ํ•œ ๊ฑธ์Œ

์ฐธ๊ณ 

https://www.oracle.com/java/technologies/javase/codeconventions-contents.html

http://kwangshin.pe.kr/blog/java-code-conventions-%EC%9E%90%EB%B0%94-%EC%BD%94%EB%94%A9-%EA%B7%9C%EC%B9%99/

https://naver.github.io/hackday-conventions-java/

๋ฅผ ์ฐธ๊ณ ํ•˜๊ณ  ํ•™์Šตํ•˜์˜€์Šต๋‹ˆ๋‹ค!



๐Ÿฅ 1. ๊ฐœ์š” ๐Ÿฅ

Java Code Conventions ์ด ํ•„์š”ํ•œ ์ด์œ ?

์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋น„์šฉ ์ค‘ 80% ๊ฐ€ ์œ ์ง€ ๋ณด์ˆ˜์— ์“ฐ์—ฌ์ง€๋Š”๋ฐ, ์ง์ ‘ ๊ฐœ๋ฐœํ•œ ๊ฐœ๋ฐœ์ž๊ฐ€ ์œ ์ง€๋ณด์ˆ˜ ๊นŒ์ง€ ๋‹ด๋‹นํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๊ทนํžˆ ๋“œ๋ฌผ๋‹ค.

์ฝ”๋”ฉ ๊ทœ์น™์„ ์ง€ํ‚ค๋ฉด ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ทธ ์†Œ์Šค๋ฅผ ์ฒ˜์Œ ๋ณด์•˜์„ ๋•Œ, ๋” ๋น ๋ฅธ ์‹œ๊ฐ„์•ˆ์— ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ž‘์„ฑํ•œ ์†Œ์Šค์™€๋„ ์ž˜ ์–ด์šธ๋ ค์ง„๋‹ค.




๐Ÿฅ 2. ํŒŒ์ผ ์ด๋ฆ„ ๐Ÿฅ

.java : ์ž๋ฐ” ์†Œ์Šค
.class : ์ž๋ฐ” ๋ฐ”์ดํŠธ ์ฝ”๋“œ




๐Ÿฅ 3. ํŒŒ์ผ ๊ตฌ์กฐ ๐Ÿฅ

  • 2000 ๋ผ์ธ ๋„˜๋Š” ํŒŒ์ผ ๋งŒ๋“ค์ง€ ๋ง๊ธฐ!
  • ๋นˆ ์ค„์ด๋‚˜ ๋‹ค๋ฅธ ๊ตฌ์—ญ์ž„์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์„์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์—ฌ๋Ÿฌ ๊ตฌ์—ญ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ!


๐Ÿก ์ž๋ฐ” ์†Œ์Šค ํŒŒ์ผ

์‹œ์ž‘ ์ฃผ์„, Package ๋ฌธ๊ณผ Import ๋ฌธ

  • ํŒจํ‚ค์ง€ ๋ช… ์œ„์—๋‹ค ์‹œ์ž‘ ์ฃผ์„์„ ์ž‘์„ฑํ•œ๋‹ค.
  • ํŒจํ‚ค์ง€ ๋ช…์˜ ์ฒซ๋ฒˆ์งธ ๋ ˆ๋ฒจ์€ ๋„๋ฉ”์ธ ์ด๋ฆ„๋“ค (com, edu, gov, mil, net, org) ์ค‘ ํ•˜๋‚˜์ด๊ฑฐ๋‚˜, ์˜์–ด ๋‘ ๋ฌธ์ž๋กœ ํ‘œํ˜„๋˜๋Š” ๋‚˜๋ผ ๊ตฌ๋ณ„ ์ฝ”๋“œ ์ค‘ ํ•˜๋‚˜์—ฌ์•ผ ํ•œ๋‹ค.


/*
 * ํด๋ž˜์Šค ์ด๋ฆ„
 *
 * ๋ฒ„์ „ ์ •๋ณด
 *
 * ๋‚ ์งœ
 *
 * ์ €์ž‘๊ถŒ ์ •๋ณด
 */
 
 package edu.javaConventions;

 import java.util.*;
	

Class์™€ Interface ์„ ์–ธ


/* 
 * 1) ์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ๋ฌธ์„œํ™” ์ฃผ์„
 * @version  2021๋…„ 4์›” 18์ผ
 * @author   ๋ณด๋ผ๋น„
 *
 */


public class CodeConvention {
	/* 3) ์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ๊ตฌํ˜„ ์ฃผ์„ * /
	
	public static int var1;

}

์ˆœ์„œ๊ตฌ์„ฑ์š”์†Œ์„ค๋ช…
1์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ๋ฌธ์„œํ™” ์ฃผ์„์ž‘์„ฑํ•œ ๋‚ ์งœ. ์ž‘์ •ํ•œ ์‚ฌ๋žŒ, ๋ฒ„์ „ ๊ฐ™์€ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ธฐ์ž…ํ•œ๋‹ค.
2์ธํ„ฐํŽ˜์ด์Šค, ํด๋ž˜์Šค ๋ฌธํด๋ž˜์Šค ํ˜น์€ ์ธํ„ฐํŽ˜์ด์Šค์˜ ์‹œ์ž‘์ด ๋‚˜์˜จ๋‹ค.
3์ธํ„ฐํŽ˜์ด์Šค/ ํด๋ž˜์Šค ๊ตฌํ˜„ ์ฃผ์„๋ฌธ์„œํ™”์— ์ ํ•ฉํ•˜์ง€ ์•Š์ง€๋งŒ ํ•„์š”ํ•œ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ํ•ด๋‹น ์ •๋ณด๋ฅผ ๊ธฐ์ž…ํ•œ๋‹ค.
4static ๋ณ€์ˆ˜public -> protected -> none(ํŒจํ‚ค์ง€ ์ ‘๊ทผ ์ œํ•œ์ž๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ) -> private ์ˆœ์œผ๋กœ ๊ธฐ์ž…ํ•œ๋‹ค.
5์ผ๋ฐ˜ ๋ณ€์ˆ˜์ž‘์„ฑํ•˜๋Š” ์ˆœ์„œ๋Š” ํด๋ž˜์Šค ๋ณ€์ˆ˜์™€ ๋™์ผ
6์ƒ์„ฑ์ž
7๋ฉ”์„œ๋“œ๊ธฐ๋Šฅ์„ฑ์— ์˜ํ•ด์„œ ๋‚˜๋ˆ ์ง, public ๋ฉ”์„œ๋“œ ์‚ฌ์ด์— private ๊ฐ€ ์žˆ์–ด๋„ ๋จ



๐Ÿฅ 4. ๋“ค์—ฌ์“ฐ๊ธฐ ๐Ÿฅ



  • 4๊ฐœ์˜ space๋ฅผ ๋“ค์—ฌ์“ฐ๊ธฐ ๋‹จ์œ„๋กœ ์‚ฌ์šฉ
  • ํƒญ์€ 8๊ฐœ์˜ ๋นˆ์นธ์œผ๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ํ•œ์ค„์— 80์ž๊ฐ€ ๋„˜๋Š” ๊ฒƒ์€ ํ”ผํ•˜์ž! ( ๋ฌธ์„œํ™” ์ฃผ์„ ๊ฐ™์€ ๊ฒฝ์šฐ 70์ž! )


๐Ÿก ์ค„ ๋‚˜๋ˆ„๊ธฐ

๊ทœ์น™

  1. ์ฝค๋งˆ ํ›„์— 2์ค„๋กœ ๋‚˜๋ˆˆ๋‹ค.
  2. ์—ฐ์‚ฐ์ž ์•ž์—์„œ ๋‘์ค„๋กœ ๋‚˜๋ˆˆ๋‹ค.
  3. ๋ ˆ๋ฒจ์ด ๋‚ฎ์€ ์›์น™ ๋ณด๋‹ค๋Š” ๋ ˆ๋ฒจ์ด ๋†’์€ ์›์น™์— ๋”ฐ๋ผ ๋‘ ์ค„๋กœ ๋‚˜๋ˆˆ๋‹ค.
  4. ์•ž ์ค„๊ณผ ๊ฐ™์€ ๋ ˆ๋ฒจ์˜ ์‹์ด ์‹œ์ž‘๋˜๋Š” ์ƒˆ๋กœ์šด ์ค„์€ ์•ž์ค„๊ณผ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ผ์น˜์‹œํ‚จ๋‹ค.


๐Ÿ’ ์˜ˆ์‹œ 1 : ์ˆ˜ํ•™์  ํ‘œํ˜„์‹์— ๋ ˆ๋ฒจ์›์น™์„ ์ ์šฉํ•œ ๊ฒƒ


stat.setErrRate((Math.round((stat.getErrCnt() 
			     / (double) (stat.getTotalTrnCnt())) * 100000)) / 1000.0);
        
        

๐Ÿ’ ์˜ˆ์‹œ 2 : ์ผ๋ฐ˜์ ์ธ ๋“ค์–ด์“ฐ๊ธฐ๋Š” ๋นˆ์นธ 8๊ฐœ๋ฅผ ํ™œ์šฉํ•˜์ž


vo.stream()
        .forEach(data -> { ... })
        

๐Ÿ’ ์˜ˆ์‹œ 3 : 3ํ•ญ ์—ฐ์‚ฐ์ž์—์„œ ๊ฐ€๋Šฅํ•œ 3 ๊ฐ€์ง€ ๋ฐฉ๋ฒ•


a = (์—ฐ์‚ฐ์‹) ? b : c;  
  
a = (์—ฐ์‚ฐ์‹) ? b
           : c;  
  
a = (์—ฐ์‚ฐ์‹)
    ? b
    : c;


๐Ÿฅ 5. ์ฃผ์„ ๐Ÿฅ


  • ์ž๋ฐ”์—์„œ ์ฃผ์„์€ 2๊ฐ€์ง€!
    1) ๊ตฌํ˜„ ์ฃผ์„ : ๊ฐ๊ฐ์˜ ๊ตฌํ˜„์— ๋Œ€ํ•ด ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์ด ํ•„์š”ํ•  ๋•Œ
/* .. */  
//
  • ๊ตฌํ˜„ ์ฃผ์„์€ ๊ฐ๊ฐ์˜ ๊ตฌํ˜„์— ๋Œ€ํ•œ ์ถ”๊ฐ€์ ์ธ ์„ค๋ช…์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉ

  • ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๊ฐ™์€ ์ „์ฒด์ ์ธ ์ฝ”๋“œ ํ๋ฆ„์— ๋Œ€ํ•œ ๋‚ด์šฉ์—๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.

    2) ๋ฌธ์„œํ™” ์ฃผ์„ :

    
    /** .. */
    
      

๐Ÿก ๊ตฌํ˜„ ์ฃผ์„ ์ข…๋ฅ˜

๐Ÿ’ 1) ๋ธ”๋ก ์ฃผ์„ : ์ˆ˜ํ•™์  ํ‘œํ˜„์‹์— ๋ ˆ๋ฒจ์›์น™์„ ์ ์šฉํ•œ ๊ฒƒ


/*
 *
 */
 
 /*- 
 * ๋“ค์—ฌ์“ฐ๊ธฐ ๊ทœ์น™์„ ๋ฌด์‹œํ•ด๋„ ๋˜๋Š” ํŠน๋ณ„ํ•œ ์ฃผ์„

 */

๐Ÿ’ 2) ํ•œ ์ค„ ์ฃผ์„ : ํ•œ ์ค„ ์ฃผ์„์€ ๋นˆ์ค„๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ๊ธธ์–ด์ง€๋ฉด ๋ธ”๋ก ์ฃผ์„์œผ๋กœ ๋ณ€๊ฒฝํ•˜์ž

if (a == b) {
 
 	/* ์ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ์‹คํ–‰ */
    
}

๐Ÿ’ 3) ๊ผฌ๋ฆฌ ์ฃผ์„ : ์•„์ฃผ ์งง์€ ์ฃผ์„์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ, ์‹ค์ œ ์ฝ”๋“œ๋ž‘ ๋ฉ€๋ฆฌ ๋–จ์–ดํŠธ๋ ค์•ผ ํ•œ๋‹ค.

if (a == b) {
 
 	sum = a + b;            /* Explain why here. */          
    
}

๐Ÿ’ 4) ์ค„์˜ ๋ ์ฃผ์„ : ํ•œ ์ค„ ์”ฉ ์ ์šฉ


if (foo > 1) {

    // Do a double-flip.
    ...
}
else {
    return false;          // Explain why here.
}
//if (bar > 1) {
//
//    // Do a triple-flip.
//    ...
//}
//else {
//    return false;
//}



๐Ÿฅ 6. ์„ ์–ธ ๐Ÿฅ

  • ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์„ ์–ธํ•˜๊ธฐ! ( int size, level ) ๋“ฑ
  • ๋‹ค๋ฅธ ํƒ€์ž…๋ผ๋ฆฌ ๊ฐ™์ด ์„ ์–ธํ•˜์ง€ ๋ง๊ธฐ! int size, sizeArr [] ; ๋“ฑ

int     level;          // indentation level
int     size;            // size of table
Object  currentEntry;    // currently selected table entry


๐Ÿก ์ดˆ๊ธฐํ™”

  • ์ง€์—ญ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋Š” ์„ ์–ธํ•  ๋•Œ!
  • ์ดˆ๊ธฐํ™” ๊ฐ’์ด ๋‹ค๋ฅธ ์ž‘์—…์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉด ๋‚˜์ค‘์— ์„ ์–ธ;

๐Ÿก ์œ„์น˜ ๋ฐฐ์น˜

  • ์ง€์—ญ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™”๋Š” ์„ ์–ธํ•  ๋•Œ!
  • ์ดˆ๊ธฐํ™” ๊ฐ’์ด ๋‹ค๋ฅธ ์ž‘์—…์— ์˜ํ•ด ๊ฒฐ์ •๋˜๋ฉด ๋‚˜์ค‘์— ์„ ์–ธ;

์ข‹์€ ์›นํŽ˜์ด์ง€ ์ฆ๊ฒจ์ฐพ๊ธฐ