SOP面向痛苦的编程,是一种思想,即:只有在必须创造一种技术,否则就会感到痛苦的情况下才去开发,否则就不要开发它。
SOP可以确保你总是在忙最重要的工作,从而降低了风险。关于SOP,有三句口诀:先使之可能,再使之漂亮,后使之快速。
先使之可能
面对不熟悉的领域,一上来就构建一般的或者可扩展的方案是错误的。此时对问题域的理解还不足以支持预测未来的需要。会把事情搞得过于泛化,增加复杂度,浪费时间。
最好是先把东西做出来,直截了当先解决手头问题,完成真正需要的,避免浪费。在这个过程中,对问题的各种复杂方面的理解也会越来越深。
再使之漂亮
在解决问题的过程中,随着思想的不断深入,将会找到更多的用例,对构建系统的复杂程度也有了深入的了解。这种深入的理解可以知道你创建“漂亮”的技术设施来取代现有的系统,从而减轻痛苦,并支持构建新的系统和特性,而这些在之前基础上是难以做到的。
后使之快速
有了漂亮的设计,便可以安全的再新能分析和优化上投入时间了。过早优化只会浪费时间,因为那时还会重新考虑自己的设计。
“使之快速”与系统的高层性能特征无关。对高层性能问题的理解,应该在“使之可能”阶段已经获得,在“使之漂亮”阶段融入设计了。“使之快速”只关乎微观的优化,让代码更紧凑,从而更高效的使用资源。
周而复始
SOP是个持续的过程。在不熟的领域中探索,加上不断地进行迭代,难免带来邋遢的代码。而SOP最重要的特征便是对重构的持续专注。要防止偶发复杂性破坏你的代码库,这是至关重要的。
结论
SOP中,用例就是一切。而发掘用例的唯一途径就是借助实际动手来获得经验。SOP认为人们不能有效的预测目前尚未出现的需求。在没有深入理解问题领域的情况下贸然泛化系统设计只会带来浪费和复杂性。设计只能由看得见、摸得着的真实用例来驱动