소프트웨어 이야기/착한 프로그래밍 2

간단한 C++ 전략 패턴

#include #include // typeid 를 사용하기 위해서 using namespace std; // 문제 : 디바이스 타입별로 읽기, 쓰기가 다르고 앞으로도 계속 새로운 디바이스 타입들이 나올텐데 어떻게 하면 기존 프로그램의 수정을 최소로 하고 기계적으로 // 새로운 디바이스를 지원할 수 있을까? // 해결책 : 디바이스 타입별로 다른 읽기/쓰기를 독립된 각각 독립된 객체로 만들고 이 것을 이용하는 client에 이 객체들을 담을 수 있는 추상클래스를 갖도록 하고 // 전체 디바이스를 아우르는 Device 추상 클래스를 만들고 구체적인 디바이스 타입별 클래스는 이 녀석을 상속한다. Client는 추상클래스(인터페이스)에 대해 프로그래밍한다. // Client는 추상클래스에 대해 읽기/쓰기를 ..

착한 프로그래밍

좋은 소프트웨어는 사용자가 원하는 것을 주어야 한다. 그러려면 사용자의 요구를 잘 분석해야 겠다. 경제성도 따져보아야 한다. 정해진 가격과 시간으로 만들어야 하기에. 이를 위해 적절한 소프트웨어 아키텍쳐를 생각해 보아야 한다. 좋은 소프트웨어는 SW적 품질이 좋아야 한다. 이해하기 쉽고, 간결하고, 유지보수 쉽고, 성능 좋게 짜여진 프로그램이 좋은 품질의 SW이다. 좋은 품질은 좋은 프로그래머가 만든다. 좋은 프로그래머는 프로그래밍을 단순히 code를 배설하는 행위라 여기지 않는다. 레고 블럭 쌓기 같이, 예쁜 공예품을 만드는 것 같은 세심함과 뿌듯함으로, 사랑하는 사람을 위해 음식을 만들 때와 같은 착한 마음으로 임한다. 최소한 전에는 그랬다. 80년대 프로그래밍은 K&R 로 시작했다. Fortran으..