Code Convention - leegwichan/StackOverFlow_Refactoring GitHub Wiki

๊ธฐ๋ณธ์ ์ธ Code Convention

์ฐธ๊ณ  ์ž๋ฃŒ

2. Source file basics

  • 2.1 File name
    • ๊ฐ€์žฅ ์ƒ์œ„์— ์ž‘์„ฑ๋œ class ์ด๋ฆ„๊ณผ ๋™์ผ, ํ™•์žฅ์ž๋Š” .java๋ฅผ ์‚ฌ์šฉ
  • 2.2 File encoding: UTF-8
  • 2.3 Special characters
    • Whitespace characters
      • ์†Œ์Šค ํŒŒ์ผ์—์„œ๋Š” ASCII horizontal space character (0x20) ๋งŒ์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • Special escape sequences
      • ํŠน์ • ๋ฌธ์ž(\b, \t, \n, \f, ...)๋“ค์€ octal, Unicode ํ˜•์‹์ด ์•„๋‹Œ "\n" ๊ณผ ๊ฐ™์€ ํ˜•์‹์„ ์‚ฌ์šฉํ•œ๋‹ค.
    • Non-ASCII characters
      • ์•„๋ž˜์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•œ๋‹ค.
      // ๊ฐ€์žฅ ์ข‹์€ ๋ฐฉ๋ฒ•
      String unitAbbrev = "ฮผs";
      
      // ๋‚˜ํƒ€๋‚ผ ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—๋Š” Unicode๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ๋‹ค.
      return '\ufeff' + content; // byte order mark
      

3. Source file structure

  • ์•„๋ž˜์™€ ๊ฐ™์€ ์ˆœ์„œ๋Œ€๋กœ ์ž‘์„ฑํ•˜๊ณ  ๊ฐ ๋ถ€๋ถ„๋งˆ๋‹ค BLANK LINE์„ ๋งŒ๋“ ๋‹ค.
  • 3.1 License or copyright information
    • ์žˆ๋‹ค๋ฉด ์ž‘์„ฑํ•˜๊ณ  ์•„๋‹ˆ๋ฉด ์ž‘์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • 3.2 Package statement
  • 3.3 Import Statement
    • No wildcard imports : ๋’ค์— "*"์„ ์ด์šฉํ•ด์„œ ์—ฌ๋Ÿฌ class, method๋ฅผ importํ•˜์ง€ ์•Š๋Š”๋‹ค.
    • Ordering and spacing : static imports ๋ฅผ ์šฐ์„ ์ ์œผ๋กœ ์ ๊ณ  non-static imports๋ฅผ ํ•œ์นธ ๋„๊ณ  ์ ์Œ
  • 3.4 Class declaration

4. Formatting

5. Naming

6. Programming Practices

๋ณด๊ธฐ ํŽธํ•˜๊ธฐ ์œ„ํ•œ Code Convention

1. method

  • ๋ฉ”์„œ๋“œ์˜ ๊ธธ์ด๊ฐ€ 15๋ผ์ธ์„ ๋„˜์–ด๊ฐ€์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค.
  • ๋ฉ”์„œ๋“œ๊ฐ€ ํ•œ ๊ฐ€์ง€ ์ผ๋งŒ ํ•˜๋„๋ก ์ตœ๋Œ€ํ•œ ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ.
  • ๋ฉ”์„œ๋“œ์˜ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 3๊ฐœ๊นŒ์ง€๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.

2. ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ

  • indent(์ธ๋ดํŠธ, ๋“ค์—ฌ์“ฐ๊ธฐ) depth๋ฅผ 3์ด ๋„˜์ง€ ์•Š๋„๋ก ๊ตฌํ˜„ํ•œ๋‹ค. 2๊นŒ์ง€๋งŒ ํ—ˆ์šฉํ•œ๋‹ค.
    • ์˜ˆ๋ฅผ ๋“ค์–ด while๋ฌธ ์•ˆ์— if๋ฌธ์ด ์žˆ์œผ๋ฉด ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” 2์ด๋‹ค.
  • 3ํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
  • else ์˜ˆ์•ฝ์–ด๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.
  • switch/case๋Š” ์ตœ์†Œํ•œ์œผ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

3. ํ…Œ์ŠคํŠธ

  • JUnit 5์™€ AssertJ๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ณธ์ธ์ด ์ •๋ฆฌํ•œ ๊ธฐ๋Šฅ ๋ชฉ๋ก์ด ์ •์ƒ ๋™์ž‘ํ•จ์„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋กœ ํ™•์ธํ•œ๋‹ค.