์ฃผ์์ ์ค๋๋ ์๋ก ์ฝ๋์์ ๋ฉ์ด์ง๋ฉฐ ์ค๋๋ ์๋ก ๊ทธ๋ฆ๋ ๊ฐ๋ฅ์ฑ๋ ์ปค์ง๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ฃผ์์ ์ ์งํ๊ณ ๋ณด์ํ๊ธฐ๋ ๋ถ๊ฐ๋ฅํ๋ค.
- ํ์ง๋ง ์ฝ๋๋ ๋ณํํ๊ณ ์งํํ๋ค.
์ฝ๋๋ง์ด ์ ํํ ์ ๋ณด๋ฅผ ์ ๊ณตํ๋ ์ ์ผํ ์ถ์ฒ์ด๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ฃผ์์ ๊ฐ๋ฅํ ์ค์ด๋๋ก ๊พธ์คํ ๋ ธ๋ ฅํด์ผํ๋ค.
- ์ฝ๋์ ์ฃผ์์ ์ถ๊ฐํ๋ ์ด์ ๋ ์ฝ๋ ํ์ง์ด ๋์๊ธฐ ๋๋ฌธ์ด๋ค.
- ์์ ์ด ์ ์ง๋ฅธ ๋์ฅํ์ ์ฃผ์์ผ๋ก ์ค๋ช ํ๋ ค ์ ์ฐ๋ ๋์ ๊ทธ ๋์ฅํ์ ๊นจ๋์ด ์น์ฐ๋๋ฐ ์๊ฐ์ ๋ณด๋ด๋ผ
- ์ฝ๋๋ง์ผ๋ก ์๋๋ฅผ ํํํ๊ธฐ ์ด๋ ต๋ค๋ฉด?
// ์ง์์๊ฒ ๋ณต์ง ํํ์ ๋ฐ์ ์๊ฒฉ์ด ์๋์ง ๊ฒ์ฌํ๋ค.
if ((employee.flags & HOURLY_FLAG) && (employee.age > 65))
- ์ฃผ์์ผ๋ก ๋ฌ๋ ค๋ ์ค๋ช ์ ํจ์๋ก ๋ง๋ค์ด ํํํด๋ ์ถฉ๋ถํ๋ค.
if (employee.isEligibleForFullBenefits())
- ์์คํ์ผ ์ฒซ๋จธ๋ฆฌ์ ์ฃผ์์ผ๋ก ๋ค์ด๊ฐ๋ ์ ์๊ถ ์ ๋ณด์ ์์ ๊ถ ์ ๋ณด๋ ํ์ํ๊ณ ๋ ํ๋นํ๋ค.
- ๊ธฐ๋ณธ์ ์ธ ์ ๋ณด๋ฅผ ์ฃผ์์ผ๋ก ์ ๊ณตํ๋ฉด ํธ๋ฆฌํ๋ค.
// kk:mm:ss EEE, MMM dd, yyyy ํ์์ด๋ค.
Pattern timeMatcher = Patter.complie("\\d*:\\d*:\\d* \\w*, \\w* \\d*, \\d*");
- ํ์ง๋ง ๊ฐ๋ฅํ๋ค๋ฉด ํจ์ ์ด๋ฆ์ ์ ๋ณด๋ฅผ ๋ด๋ ํธ์ด ์ข๋ค.
- ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํด์ฃผ๋ UtilClass์ ๊ธฐ๋ฅ์ ํ์ฉํ๋ฉด ์ฃผ์์ด ํ์์์ด์ง๋ค.
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("kk:mm:ss EEE, MMM dd, yyyy");
- ๊ฐ๋ฐ์์ ๊ฒฐ์ ์ ๊น๋ฆฐ ์๋๋ฅผ ์ค๋ช ํ๋ ์ฃผ์
public int compareTo(Object o){
if(o instanceof WikiPagePath){
...
}
return 1; // ์ค๋ฅธ์ชฝ ์ ํ์ด๋ฏ๋ก ์ ๋ ฌ ์์๊ฐ ๋ ๋๋ค.
}
- ๋ชจํธํ ์ธ์๋ ๋ฐํ๊ฐ์ด ํ์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ๋ณ๊ฒฝํ์ง ๋ชปํ๋ ์ฝ๋์ ์ํ๋ค๋ฉด ์๋ฏธ๋ฅผ ๋ช ๋ฃํ๊ฒ ๋ฐํ๋ ์ฃผ์์ด ์ ์ฉํ๋ค.
public void testCompareTo() throws Exception {
...
assertTrue(a.compareTo(a) == 0); // a == a
assertTrue(a.compareTo(b) != 0); // a != b
assertTrue(a.compareTo(b) == -1); // a < b
assertTrue(b.compareTo(a) == 1); // b > a
}
ํ์ง๋ง, ์ฃผ์์ด ์ฌ๋ฐ๋ฅธ์ง ๊ฒ์ฆํ๊ธฐ ์ฝ์ง์์ผ๋ฏ๋ก ์ฃผ์์ ๋ฌ ๋ ๋ ๋์ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ณ ๋ฏผํ๊ณ ์ ํํ ๋ฌ๋๋ก ์ฃผ์ํ๋ค.
- ๋ค๋ฅธ ๊ฐ๋ฐ์์๊ฒ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฝ๊ณ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฃผ์
public static SimpleDateFormat makeStandardHttpDateFormat() {
// SimpleDateFormat์ ์ค๋ ๋์ ์์ ํ์ง ๋ชปํ๋ค
// ๋ฐ๋ผ์ ๊ฐ ์ธ์คํด์ค๋ฅผ ๋
๋ฆฝ์ ์ผ๋ก ์์ฑํด์ผํ๋ค.
SimpleDateFormat df = new SimpleDateFormat("kk:mm:ss EEE, MMM dd, yyyy");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
return df;
}
- โ์์ผ๋ก ํ ์ผโ์
//TODO
๋จ๊ฒจ๋๋ฉด ํธํ๋ค. - ์ด๋ ํ์ํ๋ค ์ฌ๊ธฐ์ง๋ง ๋น์ฅ ๊ตฌํํ๊ธฐ ์ด๋ ค์ด ์ ๋ฌด๋ฅผ ๊ธฐ์ ํ๋ค.
- ๊ทธ๋๋ TODO๋ก ๋ก์น ํ ์ฝ๋๋ ๋ฐ๋์งํ์ง์์ผ๋ฏ๋ก ์ฃผ๊ธฐ์ ์ผ๋ก ์ ๊ฒํด ์์ ๋ผ๊ณ ๊ถํ๋ค.
- ์์นซ ๋์๋กญ์ง ์๋ค๊ณ ์ฌ๊ฒจ์ง ๋ญ๊ฐ์ ์ค์์ฑ์ ๊ฐ์กฐํ๊ธฐ ์ํด ์ฃผ์์ ์ฌ์ฉํ๋ค.
String listItemContent = match.group(3).trim()
// ์ฌ๊ธฐ์ trim์ ์ ๋ง ์ค์ํ๋ค.trim ํจ์๋ ๋ฌธ์์ด์์ ์์ ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ค
// ๋ฌธ์์ด์ ์์ ๊ณต๋ฐฑ์ด ์์ผ๋ฉด ๋ค๋ฅธ ๋ฌธ์์ด๋ก ์ธ์๋๊ธฐ ๋๋ฌธ์ด๋ค.
- ๊ณต๊ฐ API๋ฅผ ๊ตฌํํ๋ค๋ฉด ๋ฐ๋์ ํ๋ฅญํ Javadocs๋ฅผ ์์ฑํ๋ค.
- ์ฃผ์์ ๋ฌ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๋ฉด ์ถฉ๋ถํ ์๊ฐ์ ๋ค์ฌ ์ต๊ณ ์ ์ฃผ์์ ๋ฌ๋๋ก ๋ ธ๋ ฅํด์ผํ๋ค.
- ๋ง์ฝ ์ดํด๊ฐ ์๋์ด ๋ค๋ฅธ ๋ชจ๋๊น์ง ๋ค์ ธ์ผ ํ๋ ์ฃผ์์ ๋ ์์ ์ ๋๋ก ์ํตํ์ง ๋ชปํ๋ ์ฃผ์์ด๋ค.
- ์ฝ๋ ๋ด์ฉ์ ๊ทธ๋๋ก ์ค๋ณตํ๋ ์ฃผ์์ ์ค์ ์ฝ๋๋ณด๋ค ๋ถ์ ํํด ๋ ์๊ฐ ๋์ถฉ ์ดํดํ๊ณ ๋์ด๊ฐ๊ฒ ๋ง๋ ๋ค.
// this.closed๊ฐ true์ผ ๋ ๋ฐํ๋๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ค.
// ํ์์์์ ๋๋ฌํ๋ฉด ์์ธ๋ฅผ ๋์ง๋ค.
public synchronized void waitForClose(final long timeoutMillis) throws Exception {
if(!closed) {
wait(timeoutMillis);
if(!closed)
throw new Exception();
}
}
- ์ ์์ ๋ ์ค๋ณต๋ ๋ง์ผ๋ฉด์ ์คํดํ ์ฌ์ง๋ ์กด์ฌํ๋ค.
this.closed
๊ฐtrue
์ผ ๋ ๊ทธ ๋ฌด์๋ ๋ฐํํ์ง ์๋๋ค.
- ์ฃผ์์ ๋ด๊ธด ์๋ชป๋ ์ ๋ณด๋ก ์ธํด ํ๋ก๊ทธ๋๋จธ๋ ์ด์ ๋ฅผ ์ฐพ๋๋ผ ๊ณจ๋จธ๋ฆฌ๋ ์๋๋ค.
- ๋ชจ๋ ํจ์์ Javadocs๋ฅผ ๋ฌ๊ฑฐ๋ ๋ชจ๋ ๋ณ์์ ์ฃผ์์ ๋ฌ์์ผ ํ๋ค๋ ๊ท์น์ ์ฝ๋๋ฅผ ๋ณต์กํ๊ฒ ๋ง๋ค๋ฉฐ, ๊ฑฐ์ง๋ง์ ํผ๋จ๋ฆฌ๊ณ ํผ๋๊ณผ ๋ฌด์ง์๋ฅผ ์ด๋ํ๋ค.
- ์์ ์ ๋ชจ๋ ๋ชจ๋ ์ฒซ๋จธ๋ฆฌ์ ๋ณ๊ฒฝ ์ด๋ ฅ์ ๊ธฐ๋กํ๋ ๊ด๊ณ๊ฐ ๋ฐ๋์งํ๋ค.
- ํ์ง๋ง ๋น์์ ์์ค์ฝ๋๊ด๋ฆฌ์์คํ (ํ์๊ด๋ฆฌ์์คํ )์ด ์์์ผ๋๊น ์ด์ ๋ ํผ๋๋ง ๊ฐ์คํ ๋ฟ์ด๋ค.
- ๋๋ฌด ๋น์ฐํ ์ฌ์ค์ ์ธ๊ธํ๋ฉฐ ์๋ก์ด ์ ๋ณด๋ฅผ ์ ๊ณตํ์ง ๋ชปํ๋ ์ฃผ์
/**
* ๊ธฐ๋ณธ ์์ฑ์
*/
protected AnnualDateRule(){}
์ง๋์น ์ฐธ๊ฒฌ์ ์ฃผ์์ ๋ฌด์ํ๊ฒ ๋ง๋ ๋ค.
- ์ํํ๋ ๋ชฉ์ ์์ด ์ ๊ณต๋๋ ์ฃผ์์ ์ก์์ผ ๋ฟ์ด๋ค.
/** The version. **/
private String version;
/** The version. **/
private String info;
copy & paste ์ค๋ฅ ๊ฐ์ ๋ณด์.
- ์ฃผ์์ด ํ์ํ์ง ์๋๋ก ์ฝ๋๋ฅผ ๊ฐ์ ํ์.
// ์ ์ญ ๋ชฉ๋ก <smodule>์ ์ํ๋ ๋ชจ๋์ด ์ฐ๋ฆฌ๊ฐ ์ํ ํ์ ์์คํ
์ ์์กดํ๋๊ฐ?
if (smodule.getDependSubsystems().contains(subSysMod.getSubSystem()))
ArrayList moduleDependees = smodule.getDependSubsystems();
String ourSubSystem = subSysMod.getSubSystem();
if(moduleDependees.contains(ourSubSystem))
- ๋๋๋ก ์์คํ์ผ์์ ํน์ ์์น๋ฅผ ํ์ํ๋ ค ์ฃผ์์ ์ฌ์ฉํ๋ค.
// Actions /////////////////////
- ๋ฐฐ๋ ์๋ ํน์ ๊ธฐ๋ฅ์ ๋ชจ์๋์ผ๋ฉด ์ ์ฉํ ๊ฒฝ์ฐ๋ ์์ผ๋ฉฐ, ์ด๋ ๋์ ๋๋ฏ๋ก ์ฃผ์๋ฅผ ํ๊ธฐํ๋ค.
- ํ์ง๋ง ์ด๋ ๊ฐ๋ ์ฑ์ ๋ฎ์ถ๋ฉฐ ๋จ์ฉํ๋ฉด ๋ ์๊ฐ ํํ ์ก์์ผ๋ก ์ฌ๊ฒจ ๋ฌด์ํ ์ ์์ผ๋ฏ๋ก
- ๋ฐ๋์ ํ์ํ ๋๋ง, ์์ฃผ ๋๋ฌผ๊ฒ ์ฌ์ฉํ๋ ํธ์ด ์ข๋ค.
- ์ค์ฒฉ์ด ์ฌํ๊ณ ์ฅํฉํ ํจ์๋ผ๋ฉด ์ด ์ฃผ์์ ์๋ฏธ๊ฐ ์์ ์ง ๋ชจ๋ฅด์ง๋ง, ์๊ณ ์บก์ํ๋ ํจ์์๋ ์ก์์ผ ๋ฟ์ด๋ค.
- ์ฃผ์์ ๋ฌ์์ผ๊ฒ ๋ค๋ ์๊ฐ์ด ๋ ๋ค๋ฉด ํจ์๋ฅผ ์ค์ด๋ ค ์๋ํ์.
try {
while(){
...
} // while
} // try
- ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ด ์๋ค๋ฉด ๋๊ฐ ์ธ์ ๋ฌด์์ ์ถ๊ฐํ๋์ง ๊ธฐ๋กํ ํ์๊ฐ ์๋ค.
- ์ฃผ์์ผ๋ก ์ฒ๋ฆฌ๋ ์ฝ๋๋ ๋ค๋ฅธ ์ฌ๋๋ค์ด ์ง์ฐ๊ธฐ๋ฅผ ์ฃผ์ ํ๋ค.
- ์ด์ ๊ฐ ์์ด ๋จ๊ฒจ ๋์ง์์์๊น ํน์ ์ค์ํ๋๊น ์ง์ฐ๋ฉด ์๋๋ค๊ณ ์๊ฐํ๋ค.
- ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ด ์ฐ๋ฆฌ๋ฅผ ๋์ ํด ์ฝ๋๋ฅผ ๊ธฐ์ตํด์ค๋ค. ๊ทธ๋ฅ ์ญ์ ํ๋ผ.
- HTML ์ฃผ์์ IDE์์ ์กฐ์ฐจ ์ฝ๊ธฐ ์ด๋ ต๋ค.
- ๋๊ตฌ(ex. Javadocs)๋ก ์ฃผ์์ ๋ฝ์ ์นํ์ด์ง์ ์ฌ๋ฆด ์์ ์ด๋ผ๋ฉด, ์ฃผ์์ HTML ํ๊ทธ๋ฅผ ์ฝ์ ํด์ผํ๋ ์ฑ ์์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์๋๋ผ ๋๊ตฌ๊ฐ ์ ธ์ผํ๋ค.
- ์ฃผ์์ ๋ฌ์์ผ ํ๋ค๋ฉด ๊ทผ์ฒ์ ์๋ ์ฝ๋๋ง ๊ธฐ์ ํ๋ผ.
- ์ฝ๋ ์ผ๋ถ์ ์ฃผ์์ ๋ฌ๋ฉด์ ์์คํ ์ ์ ๋ฐ์ ์ธ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ์ง ๋ง๋ผ.
/**
* ์ ํฉ์ฑ ํ
์คํธ๊ฐ ๋์ํ๋ ํฌํธ : ๊ธฐ๋ณธ๊ฐ์ <b>8082</b>
*
* @param fitnessePort
*/
public void setFitnessePort(int fitnessePort) {
this.fitnessPort = fitnessePort;
}
์ด ํจ์๋ ํฌํธ ๊ธฐ๋ณธ๊ฐ์ ์ ํ ํต์ ํ์ง ๋ชปํ๋ค. ์์คํ ์ด๋๊ฐ ๋ค๋ฅธ ํจ์๋ฅผ ์ค๋ช ํ๊ณ ์๋ค.
- ์ฃผ์์ ํฅ๋ฏธ๋ก์ด ์ญ์ฌ๋ ๊ด๋ จ ์๋ ์ ๋ณด๋ฅผ ์ฅํฉํ๊ฒ ๋์ด๋์ง ๋ง๋ผ.
- ์ฃผ์๊ณผ ์ฃผ์์ด ์ค๋ช ํ๋ ์ฝ๋๋ ๋ ๊ด๊ณ๊ฐ ๋ช ๋ฐฑํด์ผํ๋ค.
- ์ฃผ์์ ๋ค๋ ๋ชฉ์ ์ ์ฝ๋๋ง์ผ๋ก ์ค๋ช ์ด ๋ถ์กฑํด์์ด๋ค.
- ์ฃผ์ ์์ฒด๊ฐ ๋ค์ ์ค๋ช ์ ์๊ตฌํด์๋ ์๋๋ค.
- ์งง๊ณ ํ ๊ฐ์ง๋ง ์ํํ๋ฉฐ ์ด๋ฆ์ ์ ๋ถ์ธ ํจ์๊ฐ ์ฃผ์์ผ๋ก ํค๋๋ฅผ ์ถ๊ฐํ ํจ์๋ณด๋ค ์ข๋ค.
- ๊ณต๊ฐ API์์๋ Javadocs๊ฐ ์ ์ฉํ์ง๋ง, ๋น๊ณต๊ฐ ์ฝ๋๋ผ๋ฉด ์ ์ฉํ์ง ์์ ๋ฟ ์๋๋ผ Javadocs๊ฐ ์๊ตฌํ๋ ํ์์ผ๋ก ์ธํด ์ฝ๋๋ง ๋ณด๊ธฐ์ซ๊ณ ์ฐ๋งํด์ง๋ค.