c*********e 发帖数: 16335 | 1 【 以下文字转载自 Programming 讨论区 】
发信人: convergence (Rex), 信区: Programming
标 题: 大家谈谈S.O.L.I.D.用在project上的经验教训。
发信站: BBS 未名空间站 (Thu Nov 28 22:57:24 2013, 美东)
谢谢。对S.O.L.I.D.仅有理论上的一些理解,没有很多实际project时的深刻领悟。请
大牛谈谈S.O.L.I.D.用在project上的经验教训。谢谢。 |
k**n 发帖数: 3989 | 2 呵呵,, 这个其实很难的.
比如single responsibility ,大家都认为很容易,但在实际上没有TEAM会真正做好。
而且每个人对singled的界定不一样。
OpenClose, 估计刚学oo编程的人就只到。但实际什么时候该用,如何用,还是简单的
if switch就能满足。
至于后面的。。就更难了。
学习一点用IOC的实例可能会帮助理解。但实际工作中用IOC需要整个team都能明白才行。
我觉得想进行solid的实践,从学习写unit test,并用一些mock工具比如moq, 并
refactor你现有程序开始, 比较实际可行。
【在 c*********e 的大作中提到】 : 【 以下文字转载自 Programming 讨论区 】 : 发信人: convergence (Rex), 信区: Programming : 标 题: 大家谈谈S.O.L.I.D.用在project上的经验教训。 : 发信站: BBS 未名空间站 (Thu Nov 28 22:57:24 2013, 美东) : 谢谢。对S.O.L.I.D.仅有理论上的一些理解,没有很多实际project时的深刻领悟。请 : 大牛谈谈S.O.L.I.D.用在project上的经验教训。谢谢。
|
c*********e 发帖数: 16335 | 3 en,我也觉得solid是听起来很容易,很简单,但是到了大的project实际应用的时候,
非常难的事情。
行。
【在 k**n 的大作中提到】 : 呵呵,, 这个其实很难的. : 比如single responsibility ,大家都认为很容易,但在实际上没有TEAM会真正做好。 : 而且每个人对singled的界定不一样。 : OpenClose, 估计刚学oo编程的人就只到。但实际什么时候该用,如何用,还是简单的 : if switch就能满足。 : 至于后面的。。就更难了。 : 学习一点用IOC的实例可能会帮助理解。但实际工作中用IOC需要整个team都能明白才行。 : 我觉得想进行solid的实践,从学习写unit test,并用一些mock工具比如moq, 并 : refactor你现有程序开始, 比较实际可行。
|
S***k 发帖数: 370 | 4 我的教训是但凡把solid, design pattern挂在嘴边的时候,就是project要fail的前兆
。 |
k****i 发帖数: 1072 | 5 这个不要误导。
【在 S***k 的大作中提到】 : 我的教训是但凡把solid, design pattern挂在嘴边的时候,就是project要fail的前兆 : 。
|
c*********e 发帖数: 16335 | 6 現在公司里整天在提solid,refactoring,想把web form application改成mvp或者mvc架
构。
【在 S***k 的大作中提到】 : 我的教训是但凡把solid, design pattern挂在嘴边的时候,就是project要fail的前兆 : 。
|
S***k 发帖数: 370 | 7 怎么误导了?你有没有想过为什么会出现需要把这些基本design principle放在嘴边的
情形?
这些基本的东西用起来应该是自然而然的事情,不能为了用而用。如果需要不停的提,
说明用的不是地方,用的不对,或者组里大部分人不能理解用法。即使把project给
release了,以后的bug fix,maintenance 都会比较困难。这同desing principle的本
意背道相驰。
【在 k****i 的大作中提到】 : 这个不要误导。
|
S***k 发帖数: 370 | 8 It is not necessary to change web form to mvc project. The mvc architecture
patter could be applied and implemented in web form project too. The MS MVC
framework just makes the implementation much easier.
But I think you should happy with this change. It is helpful for your resume
. We, programmers, do not need to worry company's products at all.
【在 c*********e 的大作中提到】 : 現在公司里整天在提solid,refactoring,想把web form application改成mvp或者mvc架 : 构。
|
k****i 发帖数: 1072 | 9 你没有mentor过Junior developers? Day one就要把code standard, design
principle强调一百遍;code review的时候不断的强化。当每个人的style和习惯都不
一样时才是最难管理和maintain的。用的不是地方,用的不对不是priciple的错。
举个例子,对所有members强调DRY principle是让maintenance容易了还是更难了?
养成良好的习惯对Junior developer很重要,我觉得你说的很容易误导新手.
【在 S***k 的大作中提到】 : 怎么误导了?你有没有想过为什么会出现需要把这些基本design principle放在嘴边的 : 情形? : 这些基本的东西用起来应该是自然而然的事情,不能为了用而用。如果需要不停的提, : 说明用的不是地方,用的不对,或者组里大部分人不能理解用法。即使把project给 : release了,以后的bug fix,maintenance 都会比较困难。这同desing principle的本 : 意背道相驰。
|
S***k 发帖数: 370 | 10 您老从哪里看出来我说principle有错了?
我这想造反的junior天天鄙视code standard,就差出个用自己名字命名的pettern.
check-in uncompilable code 容易被发现,就在dynamic binding时候在production
上出runtime bug.
【在 k****i 的大作中提到】 : 你没有mentor过Junior developers? Day one就要把code standard, design : principle强调一百遍;code review的时候不断的强化。当每个人的style和习惯都不 : 一样时才是最难管理和maintain的。用的不是地方,用的不对不是priciple的错。 : 举个例子,对所有members强调DRY principle是让maintenance容易了还是更难了? : 养成良好的习惯对Junior developer很重要,我觉得你说的很容易误导新手.
|
s***o 发帖数: 2191 | 11 TDD。tests都写顺溜了,code也就基本都SOLID了。
【在 c*********e 的大作中提到】 : 現在公司里整天在提solid,refactoring,想把web form application改成mvp或者mvc架 : 构。
|
c*********e 发帖数: 16335 | 12 公司用的是那种automated test,自动在input里输入测试的数据,比如自动输入用户名
,密码什么的,连鼠标hover, 右击都可以在自动测试里做出来。这样,下班前开始定
时测试,第二天上班看结果,非常方便。没用vs自带的test,不是很方便。
其实,solid基本上是神仙才能做到的事情。一个project,版本升级后,很多测试都要
改一下一下,比如菜单变了啊,界面变了啊,都会影响到test.
【在 s***o 的大作中提到】 : TDD。tests都写顺溜了,code也就基本都SOLID了。
|
s***o 发帖数: 2191 | 13 你说的这些看上去都是UI tests。TDD是unit tests, 广义上也可以包括integration
tests。
【在 c*********e 的大作中提到】 : 公司用的是那种automated test,自动在input里输入测试的数据,比如自动输入用户名 : ,密码什么的,连鼠标hover, 右击都可以在自动测试里做出来。这样,下班前开始定 : 时测试,第二天上班看结果,非常方便。没用vs自带的test,不是很方便。 : 其实,solid基本上是神仙才能做到的事情。一个project,版本升级后,很多测试都要 : 改一下一下,比如菜单变了啊,界面变了啊,都会影响到test.
|
c*********e 发帖数: 16335 | 14 发现ui test更贴近客户的需求。因为客户看到的,只是ui.如果ui对了,就能把客户骗
住了。
【在 s***o 的大作中提到】 : 你说的这些看上去都是UI tests。TDD是unit tests, 广义上也可以包括integration : tests。
|