http://www.agileway.cn/?p=73
昨晚和L君在下班后一起结对编程,使用Play!框架做一个小工具,
期望能够应用于内部的学习活动中。
我们在几周前开始,因为之前我们都熟悉Rails的编程风格,
而Play!是极力模仿Rails的Agile Java框架,
所以我们很快的就达成了将贯穿我们进行结对开发的一个最基础原则:最小惊讶原则(LSP)。
这个原则也是Ruby语言的设计原则。
我们期望我们哪怕在使用模仿(Ruby编写的)Rails的Play!时,
也能暗合这个原则。
刚巧前阵子在卓越上买了一套海音寺潮五郎的小说《上杉谦信》,
在空闲时间随便翻阅几页,就搁在手边。
上杉谦信,是日本战国时期的名将。
在小说的外封上有一段上杉谦信关于"悟"的箴言,颇有意味:
引用
"人们经常认为自己生存的社会是扭曲、不完整、污浊而不正当的,
心想过去应有均衡正当的人世。然而,实在事物皆有个性,
因此常常扭曲,常常混淆,也常常动摇。
完美的世道过去不曾有过,今后也不可能有。
因此,知道完美只存在于人的观念中,是悟的第一境界;
即使当下抓到这实在而不失望,反而心情略好地努力做事者,
就达到悟的第二境界;
不谈不完美,也不期待完美,
但一切言行举止自然朝完美前进着,可说达到了大悟之境了。
在我们正在结对编程的时候,因为是下班后时间,
旁边有些同学会好奇的过来看看我们在干什么。
刚巧,邻座Y君,今天刚刚报道,也很好奇的问我们在做什么。
于是,我们就先把"车"停下来,和他聊了会儿。
从Domain Driven Design,说到其它些杂七杂八的东西,
反正就是随便聊吧。中间,聊到了"分层(Layering)"。
Y君表明他的观点:必须进行严格的分层。
我们以前也多是此想。但自从我们准备仅以LSP作为根本指导时,
我和L君异口同声的说道:我们的观点稍有差异。
虽然我们认同分层的重要性,但我们比较倾向让分层自己自然的涌现。
这时,我恰巧眼光落在手边的《上杉谦信》的那段箴言上。
忽有灵光,觉得谦信的这段话如果作下特化(Specialize),真是很有意思。
引用
程序员经常认为自己维护的软件系统的分层设计是扭曲、不完整、污浊而不正当的,
心想过去应有大师构建出均衡正当的分层设计。然而,实在软件系统皆有个性,
因此常常扭曲,常常混淆,也常常动摇。
完美的软件分层过去不曾有过,今后也不可能有。
因此,知道完美的分层只存在于人的观念中,是悟的第一境界;
即使当下抓到这实在而不失望,反而心情略好地努力编程者,
就达到悟的第二境界;
不谈分层的不完美,也不期待分层的完美,
但一切编码行为均自然朝完美分层前进着,可说达到了软件分层的大悟之境了。
如此特化,纯属偶然的机缘,并不表明我和L君对如何处理分层已达大悟之境,
只是这忽闪而过的灵光,忽然穿过了我们想要表达的模糊的迷雾。
也许,这就是"守在当下"的禅意,象一阵偶起的清风拂过我们的身旁吧!
但愿我们能够跟随住它!
分享到:
相关推荐
汉斯·罗斯林(作者),奥拉·罗斯林(作者),安娜·罗斯林·朗兰德(作者),上杉秀作(翻译),三轮关(翻译)日经BP关于许可证表情符号图标使用创建的 (图形许可为CC-BY 4.0)。此测验是由上述“事实”的合译...
上杉夏相のGitHub一个普通的双非本科在读医学生,拥有仗剑走天涯的豪情壮志,被残酷现实所破坏,“穷则独善其身,达则兼济天下”。会一点Java,会一点Python,将会一点系统和运维,「每当有三分钟的热度,就有三分钟...
作者:上杉( ) 照片来源: ( 许可证) 执照: MIT许可证(MIT) 上杉周作(c)2015版权所有 特此免费授予获得此软件和相关文档文件(“软件”)副本的任何人无限制地处理软件的权利,包括但不限于使用,复制...
上杉伸迈克·德鲁科埃里克·施密特姜永迪 // 大家好,我是 Mike DeLucco,我是 Troubled Hamster 开发团队的成员。 我与 Yondy Kang、我们的 Scrum 经理 Shin Uesugi 和我们的产品负责人 Eric Schmidt 合作开发...
在本项目中,我们主要探讨如何使用OpenGL在VS2012环境下绘制一个五角星,并采用六种不同的颜色对其进行分割。OpenGL是一个跨语言、跨平台的图形库,广泛用于生成2D、3D图像。在Windows环境中,Visual Studio如VS2012...
使用二阶tvd格式对一维磁激波管/激波管进行数值仿真(matlab),其良好的抑制非物理震荡优势比roe格式较好,流体激波管只需将磁场值全部设为零。适合磁流体仿真和流体仿真入门
一维磁激波管或一维激波管数值计算代码,使用Roe格式计算,适用于计算流体力学或计算磁流体力学入门代码
VHDL的uartm,基于quartus II 9.0版本,RS232基于芯片
哈希表的代码,可以用于数据结构试验交作业或者用于写实验报告
### C#复习笔记知识点概述 #### 第一节:C#概览 - **起源与发展**:C#语言的发展历程从C语言逐步演化而来,经过C++的阶段,并借鉴了Java的一些特性,最终形成了C#这一现代编程语言。C#特别强调安全性、简洁性和...
在计算机系统中,乘法器和除法器是两种至关重要的算术逻辑单元(ALU),它们用于执行基本的数学运算。这篇总结将深入探讨这两种器件的实现原理、优化策略以及在并行计算中的应用。 首先,让我们从基础开始。...
通过zotero的翻译插件翻译的树莓派摄像头官方手册,适合需要用树莓派4B+camera module3跑目标检测的技术人员。
用顺序表表示约瑟夫环,其中密码相同,即为静态存储约瑟夫环的内容
这是一个用来做词嵌入的以训练好的英文词向量。本人在做词性标注时所用到的。
联通ESS系统证书,于IE或360浏览器登录前需安装此证书
本教程涵盖了算法及其应用,通过一系列的例子来说明概念,包括伯努利老虎机问题、最短路径问题、产品分类、推荐、使用神经网络的主动学习和马尔可夫决策过程中的强化学习。
二维磁激波管是研究等离子体物理、流体力学以及航空航天工程等领域中激波问题的重要工具。在本文中,我们将深入探讨二维磁激波管的MATLAB实现,特别是使用MacCormark格式进行数值模拟的方法。 ...
用顺序表来完成约瑟夫环的实现,并且密码不同.
用链表来实现约瑟夫环的构造,并且密码是相同的,动态表示
LOGO论文