Upgrade to Pro — share decks privately, control downloads, hide ads and more …

시작하는 안드로이드 개발자를 위해 ~ THINK

시작하는 안드로이드 개발자를 위해 ~ THINK

"부스트캠프"에서 발표한 "시작하는 안드로이드 개발자를 위해 ~ THINK" 발표자료입니다

pluulove (노현석)

November 12, 2021
Tweet

More Decks by pluulove (노현석)

Other Decks in Programming

Transcript

  1. "OESPJE઱ਃ 변 ച  ˅ NAVER Connect Foundation  

    'SBHNFOU .BUFSJBM%FTJHO 3VOUJNF1FSNJTTJPO %P[F.PEF ੌഥࢿӂೠ ߧਤ૑੿੷੢ 소 ੸ਊ %BSL5IFNF s,PUMJOҕध૑ਗ "OESPJE"SDIJUFDUVSF$PNQPOFOUT s$PNQPTF UI
  2. ୭ࣗߡ 전 ਷ 선 ఖ  ˅ NAVER Connect Foundation

    Y਷ױ݈ӝҳೞӝبয۰਑ పझ౟ױ݈ࣻәীয۰਑ ࢜۽द੘ೠ׮ݶ .ਵ۽ೞחҔبࠁ੉؊ۄ
  3. ˅ NAVER Connect Foundation  .7$ "TZOD5BTL .BOVBM +BWB ,PUMJO

    .77. $PSPVUJOF )JMU 7JFX9.- $PNQPTF җѢ /&95 .71 3Y+BWB %BHHFS,PJO അ੤ ѐੋ੸ੋ ੄Ѽ
  4. ˅ NAVER Connect Foundation  ࠙ݺજ૑݅  য 떤 ӝࣿ੉

    ӝࠄ߄ఔੋ૑ ౵ঈ੉ 중 ਃ ৈӝࢲחঌইࠁ૑ঋਸ৘੿
  5. ޖ੘੿ٮۄоҊ੓૑ঋաਃ  झझ۽౵ঈೞחѪ੉ 중 ਃ  ˅ NAVER Connect Foundation

    %BHHFS)JMU ؀ 세 ੉ઁद੘ ೠଵթ਺ ইఃఫ୛ח೙ࣻ
  6. $MFBO"SDIJUFDUVSF  The Clean Architecture : h tt ps://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html 

    역 ೡ੉ݺഛೞѱܻ࠙  ۨ੉য݃׮పझ౟оמ  ઙࣘࢿӏ஗  ഛ੢ਊ੉ࢿ਷ऀ਷੉੼ ഛ੢ਊ੉ࢿ ഛ੢੄ߑ 법 ਷դ੉بžžžžž
  7.  ˅ NAVER Connect Foundation data class Person( val name:

    String, val age: Int ) fun main() { val person = Person("Name", 10) val (name, age) = person } public fi nal class Person { @NotNull private fi nal String name; private fi nal int age; public fi nal String getName() { ... } public fi nal int getAge() { ... } public Person(@NotNull String name, int age) { ... } public fi nal String component1() { ... } public fi nal int component2() { ... } public fi nal Person copy(@NotNull String name, int age) { ... } public static Person copy$default(Person var0, String var1, int var2, int var3, Object var4) { ... } public String toString() { ... } public int hashCode() { .... } public boolean equals(@Nullable Object var1) { ... } } ,PUMJO +BWB
  8.  ˅ NAVER Connect Foundation data class Person( val name:

    String, val age: Int ) class Person( val name: String, val age: Int ) fun main() { val person = Person("Name", 10) val (name, age) = person } ? class Person( val name: String, val age: Int ) { operator fun component1(): String = name operator fun component2(): Int = age } '*9&% ੌ߈$MBTT #VJME
  9. TODO ৮ࢿೞӝ (׮਺ ചݶী ࠁӝ ੓যਃ) рױೠ௏٬ޙઁ class Human(val weight:

    Int) fun main() { val human = Human(10) val result = upscaleWeight(human) println(result) } /** * ރޖѱ੄ 100ߓ ҅࢑ * * @param human ࢎۈ * @return ҅࢑ Ѿҗ */ fun upscaleWeight(human: Human): Int = // TODO  ˅ NAVER Connect Foundation 👩💻🧑💻👨💻 26&45*0/
  10. ރޖѱ੄ߓ҅࢑ 50%0ীٜযтղਊ  ˅ NAVER Connect Foundation fun upscaleWeight(human: Human):

    Int = // TODO human.weight * 100  if (human.weight < 0) { 0 } else { human.weight * 100 }  ׮ܲ ׹੉ ੓ח ࠙  26&45*0/
  11. ˅ NAVER Connect Foundation  “ݽٚ ࣗ೐౟ਝয ೐۽Ӓ۔਷ Ӓ ࣗ೐౟ਝযܳ

    ࢎਊೞח ࢎਊ੗੄ ഝز੉ա ҙबࢎ৬ ҙ۲غয੓׮. ࢎਊ੗о ೐۽Ӓ۔ਸ ࢎਊೞח ؀࢚ ৔৉੉ ࣗ೐౟ਝয੄ بݫੋ੉׮.” - ীܼ ী߈झ੄ بݫੋ ઱ب ࢸ҅
  12. ރޖѱߓ҅࢑ 50%0ীٜযтղਊ ˅ NAVER Connect Foundation fun upscaleWeight(human: Human): Int

    = // TODO human.weight * 100 if (human.weight < 0) { 0 } else { human.weight * 100 } ׮ܲ ׹ *OUоо૑חߧਤܳҊ۰ ࣽࣻೠੋр੄ޖѱܳҊ۰ ੋр੄ޖѱח੿ࣻоইש  ࣗं੼੉Ҋ۰غযঠೣ  6OTJHOFEఋੑ 
  13. ˅ NAVER Connect Foundation  “ݽٚ ࣗ೐౟ਝয ೐۽Ӓ۔਷ Ӓ ࣗ೐౟ਝযܳ

    ࢎਊೞח ࢎਊ੗੄ ഝز੉ա ҙबࢎ৬ ҙ۲غয੓׮. ࢎਊ੗о ೐۽Ӓ۔ਸ ࢎਊೞח ؀࢚ ৔৉੉ ࣗ೐౟ਝয੄ بݫੋ੉׮.”
  14. 6CJRVJUPVT-BOHVBHF  ˅ NAVER Connect Foundation “بݫੋ ݽ؛ী ٮۄ ҳઑചغয

    ݽٚ ౱ਗ੉ ࣗ೐౟ਝয৬ ౱੄ ݽٚ ഝزਸ ো҅ೞ חؘ ࢎਊೞח ঱য.” - ীܼ ী߈झ੄ بݫੋ ઱ب ࢸ҅
  15. ˅ NAVER Connect Foundation ௿ېझ $MBTT  • э਷ ઙܨ(ژח

    ޙઁ ೧Ѿਸ ਤೠ)੄ ૘ױী ࣘೞח ࣘࢿ(a tt ribute)җ ೯ਤ(behavior)ܳ ੿੄ೠ Ѫ • ё୓૑ೱ ೐۽Ӓ۔੄ ӝࠄ੸ੋ ࢎਊ੗ ੿੄ ؘ੉ఠഋ(user de fi ned data type) 객 ୓ 0CKFDU  • ੗न Ҋਬ੄ ࣘࢿ(a tt ribute)ਸ о૑ݴ ௿ېझীࢲ ੿੄ೠ ೯ਤ(behavior)ܳ ࣻ೯ೡ ࣻ ੓׮. 객 ୓૑ೱ೐۽Ӓې߁  Reference : https://ko.wikipedia.org/wiki/ё୓_૑ೱ_೐۽Ӓې߁
  16. .77.ب ઑചо೙ਃ  ˅ NAVER Connect Foundation class FeedViewModel @ViewModelInject

    constructor( private val signInViewModelDelegate: SignInViewModelDelegate, … ) : ViewModel() { val timeZoneId: LiveData<ZoneId> = liveData { ... } private val loadSessionsResult = signInViewModelDelegate.currentUserInfo.switchMap { ... } private val _navigateToSessionAction = MutableLiveData<Event<String>>() val navigateToSessionAction: LiveData<Event<String>> get() = _navigateToSessionAction private val loadAnnouncementsResult: LiveData<Result<List<Announcement>>> = liveData { emit(loadAnnouncementsUseCase(timeProvider.now())) } val errorMessage: LiveData<Event<String>> = loadAnnouncementsResult.map { Event(content = (it as? Result.Error)?.exception?.message ?: "") } -JWF%BUBب݆ਵݶ ࠂ੟ೣ੉ૐо 😵💫😵💫😵💫😵💫😵💫😵💫😵💫😵💫
  17. ݆ࣻ਷-JWF%BUB੄೧ 결 ਷  ˅ NAVER Connect Foundation Ӓ؀۽ك׮ 

    Ӓܛױਤ۽ ޘ਺୊ܻ  ׮ܰѱ ೧ 결 ೠ׮  ࢚కࣘࢿӝ 준 ইఃఫ୊߸҃ ۽૒ܻ࠙ ׹਷੿ೞӝաܴ
  18. ৉ҕ೟ҕࠗ пױ҅חѐੋ੸ੋ੄ 견 ੑפ׮  ˅ NAVER Connect Foundation .77.

    $PSPVUJOF )*-5 3Y+BWB $BMMCBDL .71 .7$ %BHHFS ,PJO ࣻز ,PUMJO +BWB "TZOD5BTL
  19. ৉ҕ೟ҕࠗ пױ҅חѐੋ੸ੋ੄ 견 ੑפ׮  ˅ NAVER Connect Foundation .77.

    $PSPVUJOF 3Y+BWB %* ,PUMJO "SDIJUFDUVSF ࠺زӝ֎౟ਕ௼ ੄ઓࢿ઱ੑ 언 যоо૓੢ 점 "OESPJE݅੄ 6*#BDLHSPVOE 객 ୓૑ೱࢸ҅ п੘সױ҅੄ 역 ೡ੄ܻ࠙ п੘সױ҅੄ 역 ೡ੄ܻ࠙ ٣੗ੋಁఢ ܻಂష݂ $03&4,*--
  20. "OESPJE5SBJOJOH$PVSTFT  ˅ NAVER Connect Foundation Reference : https://developer.android.com/courses Android

    Developer Fundamentals ž ž ž ž ž - h tt ps://developer.android.com/courses/fundamentals-training/overview-v2 Advanced Android in Kotlin ž ž ž ž ž - h tt ps://developer.android.com/courses/kotlin-android-advanced/overview
  21. ੷੄&GGFDU੄दр  ˅ NAVER Connect Foundation ZFBS ZFBS ࢲ࠺झഥࢎо ݆੉ঌ۰૓द੼

    /P&GGFDU ഥࢎ ࢲ࠺झبࠁ׮ب ഥࢎউ߆੄೯ز੉ 중 ਃ