(づ。◕ ܫ ◕。)づ
4k
2019-02-08 21:17:43
8
805

누군가에게 설명을 하는게 어렵네요


인턴에게 의존성 주입에 대해 설명하는데 너무 어려웠습니다.


:(

0
0
  • 댓글 8

  • 나도아빠다
    2k
    2019-02-08 21:31:27

    정확하게 설명하자면 수많은 단어가 튀어나오고..

    그 단어들을 설명하려고하면 더 많은 새로운 단어가 튀어나오고..

    그 단어들을 설명하다보면 어느새 OOP를 통채로 설명하고 있더라는 그 DI말씀이신가요..


    고생하셨습니다..ㅠㅠ

    0
  • TheProdigy
    1k
    2019-02-08 21:34:53

    누군가에게 설명을 못하는건, 사실 본인이 잘 모르기 때문이 아닐까요?


    팀을 이뤄서 스터디를 하는 목적도, 남에게 가르칠려면 본인이 그만큼 공부를 하고, 본인의 것으로 만들기 위해서 라고 생각합니다.


    좀 다른 이야기인데, 소프트웨어 온 조엘 이던가... 그 책에도.. 노란 고무 오리 이야기가 나옵니다.(욕실에서 아이들이 가지고 노는 그 인형요)

    어떤 직원의 자리에는 고무오리 인형이 있는데,

    일을 하다가 막히면.. 그 고무오리한테 그 상황을 이야기를 합니다...

    이야기를 하다보면 자그마한 힌트라도 스스로 알아낼수 있다는 군요.

    실제로 몇 번 겪어 보기도 했구요

    1
  • 니플
    32k
    2019-02-08 21:38:18

    https://okky.kr/article/362415

    참고바랍니다.

    1
  •  (づ。◕ ܫ ◕。)づ
    4k
    2019-02-08 22:22:38

    실제로 완벽하게 알지를 못해 설명이 어렵습니다. :(

    참 어려운 개념이에요

    -1
  • 니플
    32k
    2019-02-08 22:28:29

    해당 대상을 설명하는 글을 많이 찾아보시면 좋습니다.

    더욱 좋은 것은 책을 많이 읽는 것과

    한번 설명하는 노력을 많이 해보아야합니다.


    단순하게 생각되어 머리 속에서 아 그거잖아 하는 것들도

    모두 명확하게 설명할 수 있는 정도가 되셔야합니다.


    지금은 의존성주입만 말했지만

    의존성주입외에 다른 것들도 많이 있을 것 같네요

    그것을 사전에 설명하기 전에 설명하는 연습을 해보시길 바랍니다.


    모든 일은 자신감이 있으면 하나라도 이기고 들어가게 됩니다.

    설명을 먼저 잡으시길 바랍니다.

    0
  • 하마
    6k
    2019-02-09 00:02:49 작성 2019-02-09 00:30:44 수정됨

    그거 정말 별거 없는데...ㅎㅎ

    이렇게 쉬운 걸 쓸때없이 어려운 용어/사상/구분짓기로 떡칠을 해서,  오히려 개발자들에게 짐을 지우는게 아닌가 싶은..

    그냥 객체(모듈,개체,구조체등등) 이 있다고 할 때, 특정 역할을 외부에서 객체/포인터/함수등 무엇이든 주입받아서 해결하는 방식(근데 애들 관리가 힘들어 질 수도..숨박꼭질 하는 애들 종적찾기란..) 주입받는 방식은 기술,언어마다 다를 수도 있으며 생성자를 이용하던, 세터를 이용하던 채널을 이용하던 소켓이나 파이프를 이용하던, 설정파일에 적혀있던 리플렉션을 이용하던 뭐던간에 자신이 다 구현해서 하드코딩되는 것보다 유연해지겠지요. 

    이게 특정 프레임워크나 언어에서 유행했다고 해서, 그것이 정답 및 진정한 xxx 류가 될 수 없으며 그냥 유연하게 설계 하기 위한 모든 스프트웨어 세상에서의 나타나는 일반적인 패턴 정도로 바라보면 편할 듯 싶네요. 

    한글 위키백과 보니깐 "의존성 주입(Dependency InjectionDI)은 프로그래밍에서 구성요소간의 의존 관계가 소스코드 내부가 아닌 외부의 설정파일 등을 통해 정의되게 하는 디자인 패턴 중의 하나이다."  이렇게 나오는데, 누가 정의 했는지 정말 지엽적으로 가져다 붙혔네요. 그냥 그런식으로 하는 방식, 또는  life cycle 까지 관리해주는 프레임워크가 있는것 일뿐..잘못된 정의입니다.

    아래 장,단점도 가져왔는데요. 전 한번 읽어봤는데 이딴거 읽을 필요도 없을거 같아요. ㅎㅎ
    웬만한 프로젝트엔 저 단점이 장점보다 훨씬 크지 않을까 의심스러운데.. 뭐 일일이 확인 해 볼 순 없지만서도..암튼 소는 누가 갈고~코딩은 어느세월에 합니까~이런거에 발목 잡혀서...

    문법 실수에 겁내서 말하기를 즐기지 못했더라면  오성식은 유창하게 영어를 할 수 없었다.

    장점[edit]

    • Dependency injection allows a client the flexibility of being configurable. Only the client's behavior is fixed. The client may act on anything that supports the intrinsic interface the client expects.
    • Dependency injection can be used to externalize a system's configuration details into configuration files, allowing the system to be reconfigured without recompilation. Separate configurations can be written for different situations that require different implementations of components. This includes, but is not limited to, testing.
    • Because dependency injection doesn't require any change in code behavior it can be applied to legacy code as a refactoring. The result is clients that are more independent and that are easier to unit test in isolation using stubs or mock objects that simulate other objects not under test. This ease of testing is often the first benefit noticed when using dependency injection.
    • Dependency injection allows a client to remove all knowledge of a concrete implementation that it needs to use. This helps isolate the client from the impact of design changes and defects. It promotes reusability, testability and maintainability.[22]
    • Reduction of boilerplate code in the application objects, since all work to initialize or set up dependencies is handled by a provider component.[22]
    • Dependency injection allows concurrent or independent development. Two developers can independently develop classes that use each other, while only needing to know the interface the classes will communicate through. Plugins are often developed by third party shops that never even talk to the developers who created the product that uses the plugins.
    • Dependency Injection decreases coupling between a class and its dependency.[23][24]

    단점[edit]

    • Dependency injection creates clients that demand configuration details be supplied by construction code. This can be onerous when obvious defaults are available.
    • Dependency injection can make code difficult to trace (read) because it separates behavior from construction. This means developers must refer to more files to follow how a system performs.
    • Dependency injection frameworks are implemented with reflection or dynamic programming. This can hinder use of IDE automation, such as "find references", "show call hierarchy" and safe refactorings.
    • Dependency injection typically requires more upfront development effort since one can not summon into being something right when and where it is needed but must ask that it be injected and then ensure that it has been injected.
    • Dependency injection forces complexity to move out of classes and into the linkages between classes which might not always be desirable or easily managed.[25]
    • Dependency injection can encourage dependence on a dependency injection framework.[25][26][27]



      참고로 이 댓글은 글 작성자 님에게 하는 말은 아니며, 그냥 평소 생각하던거 한잔 하고 두서없이 써본것임을 말씀드립니다.
      2
    • 나도아빠다
      2k
      2019-02-09 01:46:04

      여기서 핵심은 그걸 자바도 똑바로 이해못한 신입을이해시켜야 한다는 부분아닌가요..?


      한 2-3년차되는 후임한테는 쉽게 말해줄수있는데.. 인턴에게 저도 한번 시도했다가 엄청 데었습니다 ..

      결국 그냥 스프링이 알아서 인스턴스 만들어 넣어주는거야.. 하나하나 new안해도되 편해.. 이걸로 결국 땡치고 침몰했었죠 하하..

      0
    • 앙앙이
      3k
      2019-02-09 08:23:38 작성 2019-02-09 08:24:43 수정됨

      의존성 주입의 학술적 정의는 모르겠지만

      인테페이스로 파라미터 받아 사용하기

      뭐 이렇게 이해하고 사용합니다.

      0
    • 로그인을 하시면 댓글을 등록할 수 있습니다.