static์ผ๋ก ๊ตฌ์ฑ ๋ ํด๋์ค๋ฅผ ๋ฐฐ์ ๋ค.
์ค์ตํด๋ณด๋ ์ค ์๋ด๋ฌธ๊ตฌ๊ฐ ๋ณ๋ค.
Utility classes should not have public constructors (java:S1118)
Utility classes, which are collections of static members, are not meant to be instantiated.
Even abstract utility classes, which can be extended, should not have public constructors.
Java adds an implicit public constructor to every class which does not define at least one explicitly.
Hence, at least one non-public constructor should be defined.
๐ ๋ฌด์จ ๋ง์ธ๊ณ ํ๋
static members(์ ์ ๋ฉค๋ฒ๋ค)๋ก ๊ตฌ์ฑ ๋ ์ ํธ ํด๋์ค๋ ์ธ์คํด์คํ ๋์ง ์๋๋ค.
extended(์์, ํ์ฅ)์ด ๊ฐ๋ฅํ abstract utility classes(์ถ์ ์ ํธ ํด๋์ค๋ค)๋ผ๋ publicํ constructors(์์ฑ์)๋ฅผ ๊ฐ์ง์ง ์์์ผ ํ๋ค.
์๋ฐ๋ ์๋ฌต์ ์ผ๋ก ์ ์ด๋ ํ๋์ ์์ฑ์๋ฅผ ๋ช ์์ ์ผ๋ก ์ ์ํ์ง ์์ ๋ชจ๋ ํด๋์ค์ public ์์ฑ์๋ฅผ ์ถ๊ฐํ๋ค.
๋ฐ๋ผ์, ์ ์ด๋ ํ๋์ non-public ์์ฑ์๋ฅผ ์ ์ํด์ผ ํ๋ค.
๊ทธ๋ฌ๋๊น static ๋ฉค๋ฒ๋ค๋ก ๊ตฌ์ฑ๋ ํด๋์ค๋ฅผ ์ ์ ํ ๋๋ non-publicํ ์์ฑ์๋ฅผ ํ๋ ๋ช ์์ ์ผ๋ก ์ ์ํ๋ผ๋ ์๋ฆฌ๋ค!
์์๋ฅผ ๋ณด์.
Noncompliant Code Example
class StringUtils { // Noncompliant
public static String concatenate(String s1, String s2) {
return s1 + s2;
}
}
Compliant Solution
์ ์ฝ๋์์ StringUtils์ ๋ํ ์์ฑ์๋ฅผ ์ถ๊ฐํด์ค๋ค! ๋จ non-public ํ๋๋ก!
private StringUtils() {
throw new IllegalStateException("Utility class");
}
class StringUtils { // Compliant
private StringUtils() {
throw new IllegalStateException("Utility class");
}
public static String concatenate(String s1, String s2) {
return s1 + s2;
}
}
๋ ์์๋ณด๊ธฐ
Q1. ์ ์ํ์ง ์์ผ๋ฉด ์๋๋์?
A. ๋ฌธ์ ๋ ์๋ค. ์ ๋์๊ฐ๋๋ผ.
Q2. ๊ทธ๋ผ ๋ฌด์จ ์ฐจ์ด๊ฐ ์๋์?
A. static ๋ฉค๋ฒ๋ค๋ก ๊ตฌ์ฑ๋ ํด๋์ค ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ์ฝ๋๋ฅผ ๋ฃ์์ ๋ ์ปดํ์ผ ์๋ฌ๋ฅผ ์ผ์ผํจ๋ค.
๐ค ์ค์๋๊ฐ Major ์ด๋ผ๊ณ ๋จ๋ ๊ฑธ ๋ณด์์๋ ์ง์ผ์ฃผ๋ ํธ์ด ์ข์ ๊ฒ ๊ฐ๋ค.
'Lang > โ Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โ Java * ์กฐ๊ฑด๋ฌธ ( if, else-if, switch ) feat. ์ผํญ์ฐ์ฐ์ (0) | 2021.03.03 |
---|---|
โ Java * CMD์์ ์๋ฐ ํจํค์ง ์ปดํ์ผ ๋ฐ ์คํ (0) | 2021.02.24 |
โ Java * ๋ณ์, ์๋ณ์, ์์์ ๋ํด ์์๋ณด์ (0) | 2021.01.26 |
โ Java * ์ฌ์น์ฐ์ฐ์์ Casting์ ๋ํด ์์๋ณด์! (0) | 2021.01.23 |
โ Java * ์๋ฃํ์ ์์๋ณด์ (0) | 2021.01.22 |