단순한 것이 모든 사람에게 같은 것을 의미하지 않기 때문에 설명하기가 매우 까다 롭습니다.
예. 일부 개발자는 이것이 ?:
간단하다고 생각하지만 다른 개발자 는 if
진술이 더 낫다고 생각합니다 . 이 수준까지 내려 가면 모든 사람을 기쁘게 할 수는 없습니다.
일반적으로 복잡하지 않은 간단한 방법 입니다. 단순성을 이해하려면 복잡성을 이해해야합니다.
복잡성에는 두 가지 유형이 있습니다.
본질적인 복잡성 은 "단순한"솔루션이 문제를 적절하게 해결하지 못하기 때문에 문제에 대한 모든 합리적인 솔루션이 복잡하고 혼동 될 수있는 상황을 말합니다. -위키 백과
우연한 복잡성 은 해결해야 할 문제에 필수적이지 않은 컴퓨터 프로그램 또는 개발 프로세스 (컴퓨터 프로그래밍)에서 발생하는 복잡성입니다. -위키 백과
다음 질문으로 본질적인 복잡성을 확인할 수 있습니다.
이 솔루션은 간단합니까? 몇 분 안에 동료에게 설명 할 수 있습니까? 문제에 대한 더 간단한 해결책이 있습니까? 그렇다면 복잡한 솔루션과 간단한 솔루션간에 상충 관계가 있습니까? 우리는 그 절충과 함께 살 수 있습니까? 예를 들어, 많은 프로그래머들은 모든 것을 마이크로 최적화하는 실수를 저지르고 솔루션 (및 코드)이 지나치게 복잡해집니다.
우발적 인 복잡성 확인 :
코드가 간단합니까? 3 개월 후에 다시 돌아 오면, 뇌에 맥락을 구축하는 데 시간이 얼마나 걸리므로 변경해야합니까? 내 소스 코드의 모든 것이 명확한 목적을 가지고 있으며 그 목적을 저와 다른 개발자에게 효과적으로 전달 합니까? 코드를 테스트하는 것이 얼마나 어렵습니까? 일반적으로 코드가 복잡할수록 단위 테스트가 어려워 지므로 일반적으로 복잡성을 측정하는 데 사용합니다. 당신은 일반적으로 작고 잘 명명되고 집중된 클래스와 메소드를 원합니다. 일반적으로 디자인 패턴은 이러한 패턴을 달성하는 데 도움이됩니다.
방금 읽은 디자인 패턴을 사용하려는 경우 우연히 복잡해질 수 있습니다. '똑똑하다'고 생각하기 때문에 무언가를 넣기를 원한다면 우연히 복잡해질 수 있습니다.
이것이 도움이 되길 바랍니다 . 단순함은 EASY를 의미하지 않습니다 .