Skip to content
Ace Kim edited this page Dec 5, 2015 · 8 revisions
๋ณธ ๋ฌธ์„œ๋Š” Deviewsched์˜ Codingstyle์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ Android Opensource Project์—์„œ ๊ถŒ์žฅํ•˜๋Š” Java Language Rules๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.
๋ณธ ๋ฌธ์„œ๋Š” ์•„๋ž˜ ๋ ˆํผ๋Ÿฐ์Šค ๋ฌธ์„œ๋ฅผ ํ•„์š”ํ•œ๋งŒํผ ๋ฒˆ์—ญํ•œ ๋‚ด์šฉ ์ž…๋‹ˆ๋‹ค.
reference : https://source.android.com/source/code-style.html

๋ณธ ๋ฌธ์„œ๋ฅผ ๋ชจ๋‘ ์ฐธ๊ณ ํ•˜์˜€์œผ๋ฉด ์•„๋ž˜์˜ ๋‘ Android coding Guideline๊ด€๋ จ ๋ฌธ์„œ๋ฅผ ์ฝ์–ด์ฃผ์„ธ์š”.
(๊ถŒ์œ ๊ฐ€ ์•„๋‹Œ ํ•„์ˆ˜์ž…๋‹ˆ๋‹ค!)
Android Best Practices(ํ•œ๊ธ€)
android-guidelines(์˜๋ฌธ)

๋„ค์ด๋ฐ (๋ณ€์ˆ˜/๋ฉ”์†Œ๋“œ)

๋ณ€์ˆ˜๋ช…๊ณผ ๋ฉ”์†Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ๊ฐ™์€ ํŒจํ„ด์œผ๋กœ ๋Œ€,์†Œ๋ฌธ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์ฝ”๋“œ ๋ฉ”์†Œ๋“œ๊ฐ€ ์•„๋‹Œ์ด์ƒ ์–ธ๋”๋ฐ”( _ )๋Š” ํ™œ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

Good Bad
XmlHttpRequest XMLHTTPRequest
getCustomerId getCustomerID
class Html class HTML
String url String URL
long id long ID
๋ณ€์ˆ˜๋ช…
  • public์ด ์•„๋‹ˆ๋ฉฐ, static์ด ์•„๋‹Œ ํ•„๋“œ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ m์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • Static ํ•„๋“œ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ s๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๊ทธ ์™ธ์˜ ๋‹ค๋ฅธ ํ•„๋“œ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ ์†Œ๋ฌธ์ž๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ public static final๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ƒ์ˆ˜ ํ•„๋“œ๋ณ€์ˆ˜์˜ ์ด๋ฆ„์€ ๋Œ€๋ฌธ์ž์™€ ์–ธ๋”๋ฐ”( _ )๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ€์ˆ˜๋ช…์€ ์–ธ์ œ๋‚˜ ๊ฐ ์†Œ์Šค์ฝ”๋“œ์˜ ์ตœ์ƒ๋‹จ์— ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

ex ๋ณ€์ˆ˜๋ช…์˜ ์˜ˆ์‹œ

public class MyClass {
    public static final int SOME_CONSTANT = 42;
    public int publicField;
    private static MyClass sSingleton;
    int mPackagePrivate;
    private int mPrivate;
    protected int mProtected;
}
ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ ๋„ค์ด๋ฐ

ํ…Œ์ŠคํŠธ์ฝ”๋“œ์—์„œ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์„ ์ด๋ฃจ๋Š” ๋ฉ”์†Œ๋“œ๋Š” test๋กœ ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์„ ์‹œ์ž‘ํ•˜๋ฉฐ, ๊ทธ ์ดํ›„์—๋Š” ํ…Œ์ŠคํŠธํ•  ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„์„ ์ ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ์˜ ์ด๋ฆ„๋’ค์—๋Š” ์–ธ๋”๋ฐ”( _ )๋ฅผ ์ž‘์„ฑํ•˜์—ฌ ์–ธ๋”๋ฐ” ๋’ค์—๋Š” ํ•ด๋‹น ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๊ฐ€ ์–ด๋–ค ์ƒํ™ฉ์— ๋Œ€ํ•˜์—ฌ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋Š”์ง€์—๋Œ€ํ•œ ์„œ์ˆ ์„ ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด userLogin์ด๋ผ๋Š” ๋ฉ”์†Œ๋“œ์—์„œ ์œ ์ €๊ฐ€ ์ž๋™๋กœ๊ทธ์ธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ์— ๋Œ€ํ•ด์„œ ํ…Œ์ŠคํŠธํ•˜๋Š” ๋ฉ”์†Œ๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค๋ฉด ๊ทธ ๋ฉ”์†Œ๋“œ๋ช…์€ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๊ฒƒ ์ž…๋‹ˆ๋‹ค. testUserLogin_autologin

๋ฉ”์†Œ๋“œ ์ž‘์„ฑ

ํ™•์žฅ์„ฑ์žˆ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ์œ„ํ•ด์„œ ๋ฉ”์†Œ๋“œ์ฝ”๋“œ๋Š” ๋˜๋„๋ก ์งง๊ณ  ํ•จ์ถ•์ ์ด๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๊ฐ€๋”์€ ๊ธด ๋ฉ”์†Œ๋“œ ์ฝ”๋“œ๊ฐ€ ๋ฉ”์†Œ๋“œ์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์•Œ๊ธฐ์‰ฌ์šด ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ๋ฉ”์†Œ๋“œ ๊ธธ์ด์—๋Œ€ํ•œ ๋ช…ํ™•ํ•œ ์ œํ•œ์€ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŒ์•ฝ ๋ฉ”์†Œ๋“œ ํ•œ๊ฐœ์˜ ๊ธธ์ด๊ฐ€ 40์ค„์„ ๋„˜์–ด๊ฐ„๋‹ค๋ฉด ๊ทธ๊ฒƒ์€ ํ˜„์žฌ ์งœ๊ณ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์— ํ•ด๋ฅผ ๋ผ์น˜๊ณ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹Œ์ง€ ๋Œ์•„๋ด์•ผํ•  ํ•„์š”์„ฑ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์„

์ž๋ฐ”๋ฌธ์„œ ํ‘œ์ค€ ์ฃผ์„ ์‚ฌ์šฉํ•˜๊ธฐ

์ฝ”๋“œ์˜ ๊ฐ€์žฅ ์ƒ๋‹จ์—๋Š” ํ•ด๋‹น ์ฝ”๋“œ์—๋Œ€ํ•œ ์ €์ž‘๊ถŒ์„ ๋ช…์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋ฐ‘์œผ๋กœ Import์— ๋Œ€ํ•œ ์ฝ”๋“œ๊ฐ€ ์ด์–ด์ง€๋ฉฐ, Import ์•„๋ž˜๋กœ ์กด์žฌํ•˜๋Š” ์ฝ”๋“œ๋“ค๋ถ€ํ„ฐ๋Š” ์ฃผ์„์„ ๋‹ฌ์•„์•ผํ•˜๋Š” ์ฝ”๋“œ์˜ ์ƒ๋‹จ ๋นˆ์นธ์— ๊ด€๋ จํ•œ ์„ค๋ช… ์ฃผ์„์„ ์ ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํด๋ž˜์Šค๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์•ˆ๋‚ด๋ฅผ ๋‹ด์€ ์ฃผ์„์ฝ”๋“œ๋Š” class MyClass extends A์˜ ์œ„์— ์ ์œผ๋ฉฐ, ๊ฐ ๋ฉ”์†Œ๋“œ์—๋Œ€ํ•œ ์„ค๋ช…์„ ๋‹ด์€ ์ฃผ์„์€ public void userLogin()์˜ ์ƒ๋‹จ์— ํ•ด๋‹น ๋ฉ”์†Œ๋“œ์˜ ์—ญํ• ๊ณผ ๋ฉ”์†Œ๋“œ์— ๋“ค์–ด๊ฐ€๋Š” ์ธ์ž์— ๋Œ€ํ•œ ์„ค๋ช…์„ ์ ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

Todo ์ฃผ์„ ํ™œ์šฉํ•˜๊ธฐ

์•„๋งˆ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•ด๋‹น ์ฝ”๋“œ์˜์—ญ์—์„œ ์ฐจํ›„์— ํ•ด์•ผํ•  ์ผ์—๋Œ€ํ•œ Todo๋ฅผ ์ž‘์„ฑํ•˜๋ ค ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌํ•œ ๊ฒฝ์šฐ์—๋Š” //Todo : We must write login logiccode! ์™€ ๊ฐ™์ด ์ฃผ์„์— Todo๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ์„ ์‹œ์ž‘์œผ๋กœ ์ฃผ์„์„ ์ž‘์„ฑํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. Todo๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ฃผ์„๋ฌธ์—๋Œ€ํ•ด์„œ๋Š” ํ˜•๊ด‘์ƒ‰์œผ๋กœ Highlight ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Fixme ์ฃผ์„ ํ™œ์šฉํ•˜๊ธฐ

์œ„์˜ Todo์˜ ๊ฒฝ์šฐ์™€ ๋˜‘๊ฐ™์ด Fixme๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ฐจํ›„์— ๋ฆฌํŒฉํ† ๋ง์„ ์ง„ํ–‰ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์ด๊ฑฐ๋‚˜, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์†Œ์ง€๊ฐ€ ์žˆ๋Š” ์ฝ”๋“œ์˜ ๊ฒฝ์šฐ์— ์ˆ˜์ •์„ ํ•ด์•ผํ•˜๋Š” ๋ถ€๋ถ„์—๋Œ€ํ•ด์„œ ์•ˆ๋‚ด๋ฅผ ํ•˜๊ธฐ์œ„ํ•œ ์ฃผ์„ ํ‚ค์›Œ๋“œ ์ž…๋‹ˆ๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ Todo์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋“ค์—ฌ์“ฐ๊ธฐ

๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ 4์นธ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆœ์ˆ˜ํ•œ Tab ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, Android Studio์—์„œ ์ œ๊ณตํ•˜๋Š” Tab์„ ๋ˆ„๋ฅด๋ฉด space4์นธ์„ ํ• ๋‹นํ•˜๋Š” ๊ธฐ๋Šฅ์„ ํ™œ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํžˆ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์ˆ˜ํ–‰ํ•˜์„ธ์š”. (๊ธฐ๋ณธ์œผ๋กœ ๋˜์–ด์žˆ์Šต๋‹ˆ๋‹ค)
๋‹จ, ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ 8์นธ ํ• ๋‹นํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ๋Š” ์ด์–ด์ ธ์•ผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์–ด์ฉ”์ˆ˜์—†์ด ๊ธธ์ด๋ฅผ ์กฐ์ •ํ•˜๊ธฐ์œ„ํ•ด ํ•œ ์ค„์„ ๋‚ด๋ฆฌ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๊ฒฝ์šฐ์— ํ•œ ์ค„์„ ๋‚ด๋ฆฐ ์ฝ”๋“œ๋Š” 8์นธ์งœ๋ฆฌ ๋“ค์—ฌ์“ฐ๊ธฐ๋ฅผ ์‹œํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ๊ทธ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

Instrument i =
        someLongExpression(that, wouldNotFit, on, one, line);

์กฐ๊ฑด๋ฌธ

ํ‘œ์ค€ Brace Style ์‚ฌ์šฉํ•˜๊ธฐ

์•„๋ž˜์™€๊ฐ™์€ ํ˜•ํƒœ๊ฐ€ ํ‘œ์ค€ Brace Style์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๋ถ„๋“ค์ด ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์กฐ๊ฑด๋ฌธ์˜ ํ˜•ํƒœ์™€ ํฌ๊ฒŒ ๋‹ค๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

class MyClass {
    int func() {
        if (something) {
            // ...
        } else if (somethingElse) {
            // ...
        } else {
            // ...
        }
    }
}

๋‹จ if ์กฐ๊ฑด๋ฌธ์˜ ํ•˜๋‹จ์— ๋‹จ ํ•œ์ค„๋งŒ์˜ ์ฝ”๋“œ๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‘ ๊ฐ€์ง€ ํ˜•ํƒœ๋กœ ์ปจ๋ฒค์…˜์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

์˜ฌ๋ฐ”๋ฅธ ์˜ˆ Ex1)

if (condition) {
    body(); 
}

์˜ฌ๋ฐ”๋ฅธ ์˜ˆ Ex2)

if (condition) body();

์ž˜๋ชป๋œ ์˜ˆ

if (condition)
    body();  // bad!

Import

Import ์ž‘์„ฑ ์ˆœ์„œ

Import๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ์—๋„ ์ˆœ์„œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค! ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‹ค์Œ๊ณผ๊ฐ™์€ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ผ์ฃผ์„ธ์š”

  • Android๊ด€๋ จ ํŒจํ‚ค์ง€ Import (Acitivty, Fragment, View ๋“ฑ)
  • 3th party ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (volley, junit, NAVER maps ๋“ฑ)
  • java and javax (ArrayList, Math ๋“ฑ)

๊ทธ๋ฆฌ๊ณ  IDE์—์„œ ์ฝ”๋“œ ์ž๋™ ์ •๋ ฌ์„ ์ง„ํ–‰ํ•˜๋ฉด ๋‹ค์Œ๊ณผ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.

  • ์•ŒํŒŒ๋ฒณ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.
  • Major(android, com, org, java, etc...)๋ผ๋ฆฌ ๊ทธ๋ฃนํ•‘์ด ๋œ๊ฒƒ๋“ค๋ผ๋ฆฌ ํ•œ ์ค„๊ฐ„๊ฒฉ์œผ๋กœ ๋ถ„๋ฆฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์œ„์™€๊ฐ™์€ Import ์ž‘์„ฑ์ˆœ์„œ์˜ ๊ธฐ์ค€์ด ์„ฑ๋ฆฝ๋œ ์›์ธ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ฐœ๋ฐœ์ž๋“ค์€ import๋ฅผ ๋ณผ๋•Œ android์™€ ๊ด€๋ จํ•œ import๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ƒ๋‹จ์„ ๋ณด๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์‚ฌ๋žŒ๋“ค์€ import๋ฅผ ๋ณผ๋–„ java์™€ ๊ด€๋ จํ•œ import๋ฅผ ๋ณด๋Š” ๊ฒฝ์šฐ ๊ฐ€์žฅ ํ•˜๋‹จ์„ ๋ณด๋Š” ๊ฒฝํ–ฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ด๋ฏธ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ์— ์ต์ˆ™ํ•ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋งŽ์€ IDE๋“ค์ด ์ด๋Ÿฌํ•œ ์Šคํƒ€์ผ์„ ๋”ฐ๋ผ์™”์Šต๋‹ˆ๋‹ค.
๋‹ค์ค‘ Import ์ปจ๋ฒค์…˜

Bar๋ผ๋Š” ํด๋ž˜์Šค๋ฅผ Importํ•˜๊ธฐ์œ„ํ•ด ์šฐ๋ฆฌ๋Š” ๋‹ค์Œ ๋‘๊ฐ€์ง€ ํ˜•ํƒœ์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ๋”ฐ๋ฅผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

import foo.*; / import foo.Bar;

์ฒซ๋ฒˆ์งธ์™€๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์ข‹์€ import๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๊ฐ€ Import๋ฅผ ๋ณด์•˜์„ ๋•Œ ์–ด๋–ค ๋ชฉ์ ์„ ๊ฐ–๊ณ  ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ Import ํ•˜๋ คํ–ˆ๋Š”์ง€ ๊ทธ ์˜๋„๋ฅผ ์•Œ์•„์ฑ„๊ธฐ๊ฐ€ ์–ด๋ ค์šฐ๋ฉฐ, ์“ธ๋ฐ์—†๋Š” ํด๋ž˜์Šค๋ฅผ Import ํ•˜๋Š” ๊ฒƒ์€ ๋‚ญ๋น„์ด๊ธฐ ๋–„๋ฌธ์ž…๋‹ˆ๋‹ค. ์ •๋ง ํ•ด๋‹น ํŒจํ‚ค์ง€์˜ ๋ชจ๋“  ํด๋ž˜์Šค๊ฐ€ ํ•„์š”ํ•œ๊ฒฝ์šฐ (junit.framework.*)๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ์‚ฌ์šฉํ•ด์•ผํ•  ํด๋ž˜์Šค๋งŒ ์ •ํ™•ํžˆ ๋ช…์‹œํ•ด์„œ Import ํ•˜๋Š”๊ฒƒ์„ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

์ฝ”๋“œ ํ•œ ์ค„๋‹น ์ตœ๋Œ€ ๊ธธ์ด

์ฝ”๋“œ ํ•œ์ค„์— 100์ž์ด์ƒ์˜ ์ฝ”๋“œ๋Š” ์ ์ง€ ์•Š๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. Android Studio ๊ธฐ์ค€ Seperated Method ๊ธฐ๋Šฅ์„ ์ผœ๋ฉด 100์ž ๊ธฐ์ค€์œผ๋กœ ์—๋””ํ„ฐ์˜์—ญ์— ์‹ค์„ ์ด ๊ทธ์–ด์ง€๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜น์€ IDE ํ•˜๋‹จ ์šฐ์ธก์— ํ˜„์žฌ ์ปค์„œ๊ฐ€ ๋ช‡ ์นธ์งธ์ธ์ง€๋ฅผ ์•ˆ๋‚ดํ•˜๋Š” ๋ถ€๋ถ„์„ ๋ณด๊ณ  ์ ์ ˆํžˆ ๊ฐœํ–‰์„ ์ง„ํ–‰ํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ์งœ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

3rd Party Library

์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๊ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ๋ฌธ์„œ๋ฅผ ๊ผญ ํ•œ๋ฒˆ์ •๋„๋Š” ์ฝ๊ณ  ํ•ด๋‹น ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ง€์†์ ์œผ๋กœ ๊ฐœ๋ฐœ์ด ๋˜๋Š”์ง€, Issue๋ฅผ ๋ณด๋ฉด์„œ ์šฐ๋ฆฌ์˜ ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฌธ์ œ์˜ ์†Œ์ง€๊ฐ€ ์—†๋Š”์ง€ ์‚ดํŽด๋ด…์‹œ๋‹ค. ํŠนํžˆ Deprecated๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๊ฒƒ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

Android Log์‚ฌ์šฉ์— ๋Œ€ํ•ด

์šฐ๋ฆฌ๋Š” ํ”ํžˆ ์•ˆ๋“œ๋กœ์ด๋“œ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ํฌ๊ฒŒ ์˜์‹ํ•˜์ง€์•Š๊ณ  Log๋ฅผ ์šฉ๋„์— ๋งž์ง€์•Š๊ฒŒ ํ™œ์šฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. Android์˜ Log์—๋Š” ERROR / WARNING / INFORMATIVE / DEBUG / VERBOSE ์ข…๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉฐ ๋กœ๊ทธ๋ฅผ ์ถœ๋ ฅํ• ๋•Œ ๊ทธ ๋กœ๊ทธ๊ฐ€ ์–ด๋–ค ์นดํ…Œ๊ณ ๋ฆฌ์— ์†ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด์„œ ์ƒ๊ฐ์„ํ•˜๋ฉด์„œ ์ ์ ˆํ•œ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ณธ Deviewschedํ”„๋กœ์ ํŠธ์—์„œ๋Š” Android์˜ ๋กœ๊ทธ๋ฅผ ์ง์ ‘ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, Util ํŒจํ‚ค์ง€์—์žˆ๋Š” LogUile ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ LOGD / LOGI / LOGW / LOGV / LOGE ์™€ ๊ฐ™์ด ํ™œ์šฉํ•˜๋Š” ์œ ํ‹ธ ํด๋ž˜์Šค๊ฐ€ ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

๊ผญ ๋ณธ๋ฌธ์˜ ๋‚ด์šฉ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์ด ๋ฌธ์„œ ์ƒ๋‹จ์—์„œ ์†Œ๊ฐœํ•œ ๋‚˜๋จธ์ง€ ๋‘๊ฐœ์˜ ํŽ˜์ด์ง€์—๋Œ€ํ•ด์„œ๋„ ์ฝ์–ด๋ณด์„ธ์š”. ํ•ด๋‹น ๋ฌธ์„œ๋“ค์— ๋‹ด๊ฒจ์žˆ๋Š” ์ปจ๋ฒค์…˜ ์•ˆ๋‚ด ์—ญ์‹œ ๋ณธ ํ”„๋กœ์ ํŠธ์˜ ์ฝ”๋”ฉ ์Šคํƒ€์ผ ์ปจ๋ฒค์…˜์œผ๋กœ ์ ์šฉํ•ด๋‚˜๊ฐˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค!

Clone this wiki locally