Skip to content

Latest commit

ย 

History

History
59 lines (48 loc) ยท 2.74 KB

File metadata and controls

59 lines (48 loc) ยท 2.74 KB

CODING-CONVENTION

  • naver coding convention
  • ./rule ์•„๋ž˜์— naver-checkstyle-rules.xml, naver-intellij-formattter.xml ํŒŒ์ผ์ด ์œ„์น˜ํ•œ๋‹ค.

IntelliJ Formatter ์ ์šฉ

  1. File -> Settings -> Editor -> Code Style -> Java ํ•ญ๋ชฉ์œผ๋กœ ์ด๋™
  2. Scheme ๋ฉ”๋‰ด์—์„œ Import Scheme -> IntelliJ IDEA code style XML ์„ ์„ ํƒ
  3. ./rule ์•„๋ž˜์— ์œ„์น˜ํ•œ naver-intellij-formattter.xml ํŒŒ์ผ์„ ์„ ํƒํ•œ ํ›„ ์ ์šฉ

แ„‰แ…ณแ„แ…ณแ„…แ…ตแ†ซแ„‰แ…ฃแ†บ 2021-03-22 แ„‹แ…ฉแ„’แ…ฎ 6 38 27

Null

  • Null Validation ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ @NotNull ์„ ์‚ฌ์šฉํ•ด์„œ validation ์‹œ์ ์„ ํ•œ๊ฐ€์ง€๋กœ ํ†ต์ผํ•œ๋‹ค.
    • @javax.validation.NotNull ์€ Validation ์ด ํ•„์š”ํ•œ not-null ์†์„ฑ์— ๋ถ™์ธ๋‹ค.
  • @Nullable ์„ ์‚ฌ์šฉํ•˜์—ฌ null ์ด ๋  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋ช…์‹œ์ ์œผ๋กœ ํ‘œํ˜„ํ•ด์ค€๋‹ค.
    • ๋ฉ”์„œ๋“œ ํŒŒ๋ผ๋ฏธํ„ฐ์—๋„ null ์ด ๋  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์— ํ•œํ•ด @Nullable ์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฉ”์„œ๋“œ์—์„œ null ์„ ๋ฆฌํ„ดํ•˜์ง€ ์•Š๋„๋ก ํ•˜๋ฉฐ, ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์„ ๊ฒฝ์šฐ Optional ์„ ์‚ฌ์šฉํ•œ๋‹ค.

List, Set, Map ์‚ฌ์šฉ ์‹œ Null-Safe ์ฒ˜๋ฆฌ

  • ๊ธฐ๋ณธ์ ์œผ๋กœ ๋กœ์ง ๋‚ด์—์„œ๋Š” null ๋Œ€์‹  empty() ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
  • Nullable ์†์„ฑ์ผ ๊ฒฝ์šฐ ํ•ด๋‹น ํ•„๋“œ์— @Nullable ์„ ๋ช…์‹œํ•˜๊ณ  getter ๋ฅผ ๊ตฌํ˜„ํ•˜์—ฌ ๊ณตํ†ต์ ์œผ๋กœ Null ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.
  • ์™ธ๋ถ€์— (public) List, Set, Map ํ•„๋“œ๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋ฉด unmodifiableList ๋ฅผ ํ™œ์šฉํ•œ๋‹ค.
@Getter
public static class Sample {
     @Nullable
     private List<String> list;

     public List<String> getList() {
         return isNull(list) ? emptyList() : unmodifiableList(list);
     }

     public void add(String element) {
          if (this.list == null) {
               this.list = new ArrayList();
          }

          this.list.add(element);
     }
}

Enum ํƒ€์ž… ๋ณ€์ˆ˜ ์ด๋ฆ„

Enum ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ๋งž์ถ”์–ด Type ์œผ๋กœ suffix ๋ฅผ ๋ถ™์ธ๋‹ค.

private MemberType memberType;

Utility ํด๋ž˜์Šค ์ •์˜

  • static ๋ฉ”์†Œ๋“œ๋กœ ๊ตฌ์„ฑ๋œ Utility ํด๋ž˜์Šค์—๋Š” lombok ์˜ @UtilityClass ๋ฅผ ๋ถ™์ธ๋‹ค.
  • Util ํŠน์„ฑ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„์˜ ๋ณต์ˆ˜ํ˜•์„ ์‚ฌ์šฉํ•œ๋‹ค. (ex: PhoneNumbers, Times)
  • ์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋™์ผํ•œ ์ด๋ฆ„์ด ์žˆ๋‹ค๋ฉด, Supports ๋ฅผ postfix ๋กœ ๋ถ™์ธ๋‹ค. (Collections -> CollectionSupports)
  • com.bluebird.pipit.xxx.support ํŒจํ‚ค์ง€ ์•ˆ์—์„œ ์ž‘์„ฑํ•œ๋‹ค.

๊ฐ์ฒด ์ƒ์„ฑ

  • Constructor : 3๊ฐœ ์ดํ•˜์˜ parameter ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
  • Builder Pattern : 4๊ฐœ ์ด์ƒ์˜ parameter ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒฝ์šฐ
  • Static Factory Method : ๊ฐ์ฒด ์ƒ์„ฑ์— ์˜๋ฏธ ๋ถ€์—ฌ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ