본문 바로가기

모두보기

[SOLID] Open/Closed 원칙 목차 Single Responsibility 원칙 Open/Closed 원칙 Liskov Substitution 원칙 Interface Segregation 원칙 Dependency Inversion 원칙 Open/Closed (개방-폐쇄) 원칙 기능의 확장 가능성은 열려 있는 반면, 기능의 변경 가능성은 닫혀있어야 한다. 반드시 필요한 경우가 아니라면 기존 클래스의 기능을 변경하는 작업은 피해야 한다. 기존 코드가 어디에 어떤 방식으로 사용되고 있는지 모두 파악하기 어렵기 때문에 기존 코드의 변경이 어떠한 결과를 초래할지 정확히 예상할 수 없다. 그러므로 기능의 변경이나 확장이 요구될 때는 기존 클래스를 상속하는 방법으로 기존 코드는 유지하면서 요구사항을 만족시킬 수 있도록 설계해야 한다. 그래야 요구..
[SOLID] Single Responsibility 원칙 목차 Single Responsibility 원칙 Open/Closed 원칙 Liskov Substitution 원칙 Interface Segregation 원칙 Dependency Inversion 원칙 Single Responsibility (단일 책임) 원칙 모든 클래스는 하나의 책임만을 부여받으며, 단 하나의 이유만을 바탕으로 변경되어야 한다. 클래스가 제공하는 모든 기능은 클래스가 부여받은 책임에 기반하여 작성되어야 한다. 만약 모든 기능을 하나의 클래스가 책임진다면, 접근하지 말아야 할 변수에 엉뚱한 함수가 접근하여 내부를 부패시킬 수 있다. 반대로 여러 클래스가 하나의 기능을 책임진다면, 기능에 변경이 있을 때마다 각각의 클래스를 변경에 맞추어 완벽하게 작업해야 하는 부담이 발생한다. 특히 ..
[SOLID] SOLID 원칙이란 SOLID 원칙이란 로버트 마틴의 다섯가지 기본 원칙에서 알파벳을 합쳐 만들어진 객체 지향 설계론이다. 원칙의 목적은 시간이 지나도 유지 보수와 확장이 쉬운 시스템을 설계하기 위함이다. Single Responsibility 원칙 Open/Closed 원칙 Liskov Substitution 원칙 Interface Segregation 원칙 Dependency Inversion 원칙 Exception Not Found 블로그를 참고하여 시리즈를 손쉽게 작성할 수 있었다.
[C#] 코드 문서화 코드 문서화는 필요할 수도 있고, 아닐 수도 있다. 코드가 어떻게 작동하는지 그리고 코드를 어떻게 활용하는지 파악해야 할 때, 코드 문서는 유용하다. 코드 문서가 있으면 동료 개발자의 업무를 방해하지 않으면서, 코드를 이해할 수 있다. 즉 코드 문서는 코드와 작성자 간의 결합도를 줄여준다. 하지만 코드 문서는 생산성을 저하시키는 행정 업무로 변질되기 쉽상이다. 코드가 변경되면 문서를 같이 업데이트해야 한다. 즉 코드와 문서가 서로 결합된다. 코드 문서화는 생산성 증가를 보장하지 않는다. 따라서 문서화를 진행하기 전에 과연 코드를 문서화하는 작업이 생산성을 증가시킬 수 있는지 충분한 검토가 필요하다. 왜냐하면 코드 문서로 업무를 올바르고 정확하게 하는 것도 중요하지만, 업무를 기한 안에 적은 노력으로 완료..
구름 IDE에서 .NET Core 버전 업그레이드하기 구름 IDE에서 기본으로 제공하는 .NET Core 컨테이너는 Ubuntu 14.04 와 .NET Core 2.0.0 을 제공한다. 이때 .NET Core버전을 업그레이드하고 싶을 때 마이크로소프트 사에서 제공하는 공식 지침인 Install .NET Core SDK on Linux Ubuntu 14.04 - x64을 따라하면 dpkg 패키지의 버전이 낮아 아래와 같은 오류가 발생한다. dpkg: error processing archive /var/cache/apt/archives/aspnetcore-runtime-2.2_2.2.4-1_amd64.deb (--unpack): Errors were encountered while processing: /var/cache/apt/archives/cuda-cu..
[린 스타트업] 3부 가속 - 13 낭비하지 말라 이전 글 3부 가속 - 12 혁신 다음 글 없음 3부 가속 13 낭비하지 말라 문제는 기술적으로 '만들 수 있을까'가 아니라 '만들어야 하는가'를 알아내는 것이다. 경영은 사람으로 이루어진 시스템을 엔지니어링 하는 과정이다. 일은 과학적으로 연구될 수 있고 엄격한 실험적 접근 방식으로 개선될 수 있다. 하지만 아직도 많은 사람의 열정과 노력이 서투르거나 잘못된 방향으로 낭비되고 있다. 특히 물질적인 낭비와 달리 노력이 낭비되는 모습은 겉으로 드러나지 않는다. 지금도 필요 없는 일을 매우 효율적으로 해내려고 밤늦게 까지 일하는 사람은 대한민국에 넘쳐나고 있다. 노동자에게 더 열심히 일하라고 압박하고 보상하는 것만으로 문제가 해결되지 않는다. 더 많은 인간 소외와 갈등을 야기할 뿐이다. 문제의 근본은 잘못된..
[린 스타트업] 3부 가속 - 12 혁신 이전 글 3부 가속 - 11 적응 다음 글 3부 가속 - 13 낭비하지 말라 3부 가속 12 혁신 성공적인 혁신 팀은 성공하기 위해 정확한 구조가 잡혀야 한다. 혁신 팀은 세 가지 구조적 속성을 필요로 한다. 부족하지만 안전한 자원 독립된 개발 권한 결과에 대한 개인 보상 체계 부족하지만 안정된 자원 스타트업의 자본은 너무 많은 것도, 너무 적은 것도 모두 위험하다. 특히 갑작스런 변경에 굉장히 취약하다. 대부분 스타트업은 예산을 빠듯하게 운영하므로, 갑작스런 운영 현금 감소는 파산으로 이어질 수 있다. 그러므로 스타트업은 안정된 자본 위에 혁신을 진행해야 한다. 독립된 개발 권한 스타트업 팀은 신제품을 개발하고, 마케팅하고, 실험하고, 실행하려면 완전한 자율성이 필요하다. 과다한 승인 단계는 만들기-측..
[린 스타트업] 3부 가속 - 11 적응 이전 글 3부 가속 - 10 성장 다음 글 3부 가속 - 12 혁신 3부 가속 11 적응 회사가 성장해 나갈수록 추가 프로세스와 시스템이 필요하다. 신입 팀원을 위한 교육 프로그램이 없다면 신입 팀원은 일을 배우는 과정에서 많은 실수를 하게 되고, 기존 팀원은 신입 팀원을 지속적으로 도와야 하기 때문에 기존 업무에 집중하지 못하게 된다. 하지만 많은 스타트업이 전문적으로 일하고 싶다는 잘못된 바람으로 경직되며 관료화된다. 그렇다고 아무 시스템 없이 경영할 수는 없다. 따라서 조직 프로세스와 역량을 현재 상황에 자동으로 맞춰지도록 조직의 적응력을 높일 필요가 있다. 업무 과정을 표준화하고 신입 팀원 교육 과정을 유기적으로 개선해야 한다. 스타트업 팀이 최선의 작업 속도를 찾을 수 있도록 조직은 유연하게 적..