Re: 今天被问倒了...

楼主: godfat (godfat 真常)   2009-07-11 02:57:26
乱入 :o
※ 引述《Schelfaniel (Schelfaniel)》之铭言:
: 当然很多地方是用 Copy/Paste 硬写的 @@
: 但这样的程式,竟然也撑了 30 年了,也算很厉害了,
: 碰过一堆需求变更调整的 ( 上线之后修改 ),
: 也就是它是在程式一面运作,仍然一面修改的情形之下。
: 物件导向这方面最麻烦,很容易牵一发而动全身,
: 要改一个东西,要连带改一堆东西,加上现代化的架构,
: 有时还要改一堆 xml,让那些写 COBOL 的人,反而过来说,
: 不就改一点点就好了,怎么会这么麻烦。
关于这一段,之前有个经验,让我不禁开始思考抽象化究竟该到什么程度?
以往我理所当然是先找出相同的问题,然后一次解决,最后套用到每个地方。
意思是,绝对不会有地方是 copy & paste 出来。(部份例外先不讨论...)
但是这样却碰到一个问题... 是我之前从来没想过的。
终归一句话就是,需求改变了。
但应付需求的改变,本来就是一个需要解决的问题,而不是禁止需求的改变。
本来是一样的地方,现在需要变得不一样了。结果开始牵一发而动全身,
non-programmer 的介入,一修改,结果一边对了另一边就烂了。
接着就开始谴责我怎么写得这么没弹性... orz
是说,如果当初是 copy & paste, 确实就可以让他随便改而不影响他处。
问题是我怎么知道原本一样的后来需要不一样了?
现在要改不一样,等于是增加例外,这跟架构有关,不能随便乱调的。
当然一边砍掉,另一边 copy & paste 过来,这样也是可以。
只是我实在不太能接受这样乱搞 :s
目前还没什么好想法,可能还是要看其他人的使用习惯而配合...
: 其实我觉得像 JVM 或是微软 CLR,提供一堆让程式师选择语言,
: 算是比较能够符合个人喜好,又能够团队运作的模式,
: 毕竟,程式设计师有时需要的不只是技术或管理,
: 而是动力和热诚,让程式设计师本身处于自己舒适的环境之下开发,
: 而不要绑手绑脚,限东限西,要你乾坤大挪移也不能用,
: 降龙十八掌也不能用,这样出去必定功力下降,士气下滑嘛。
CLR 我不确定是什么,像 JVM 这样确实是有不少好处,但 .NET 的话,
例如 F#, 我就不觉得会是一个很好的方向,比较像是为了广告,
募集其他领域的人加入 .NET, 最后投靠 C#, end of the story.
会这样说是因为之前测试 C++/CLI, 我发现微软新加进去的东西,
跟原本 C++ template 根本就难以配合。用了 template,
无法用 .NET lib, 反之用了 .NET lib, 难以使用 template.
两者几乎接近互斥,让我试不下去,因为原本的东西都不能用....
也过了很多年啦。或许有改善了也说不定?
F# 也是差不多的情况。之前翻了一下书,发现如果需要呼叫 .NET,
一样会陷入 OO 那套,想 functional programming? 似乎搭不太起来。
那我想用 .NET, 何不用比较顺的 C#? 我想用 functional programming,
为什么不选 OCaml, Haskell, 或是 Clojure, Scala?
另一方面,程式跟程式间的沟通,必然会需要如此高的相依性吗?
为什么不能用某种协定(protocol)?Unix philosophy:
1. Write programs that do one thing and do it well.
2. Write programs to work together.
3. Write programs to handle text streams,
because that is a universal interface.
当然有些时候是不能选择的。只是我觉得,要尽量把想写出巨兽程式的
欲望丢掉。向往巨兽也不是说有什么不好,只是我觉得现在巨兽已经太多了...
想多呼吸一点新鲜空气。
==
本篇跟 OO 没什么关系 @@

Links booklink

Contact Us: admin [ a t ] ucptt.com