今天翻看OpenNETCF的Blog,OpenNETCF年末总会评选出一年中最好的文章,尽管“The Best of 2005”有所减少。但是OpenNETCF.Rss占据了很重要的位置,谁叫Blog今年这么火呢。
因为这两天也在琢磨着类似的题目,所以留心看了看,看完OpenNETCF.RSS的类图还是吃了一惊,从异步到同步,不同网络协议的支持,不同RSS协议都得到很好的支持。尽管作者参考了其他人的设计,但是如此考虑完善的类库,让我觉得“人比人也得扔”。
紧接着,看同一位作者(Alex Yakhnin)写的RSS阅读器,一句话让我很有感触:“The best way to test functionality and usability of a library is to use it for development for some real project.”
于是,我一下子明白了大家的差距为什么这么大。写软件如同盖房子,这是个不新鲜的比喻了。除了设计图纸、土木工作外,建材也很重要。中国农民盖房子,会买砖、瓦、木头,这些基本的材料,然后木工、瓦工一起上,把木头变成门窗、房梁,再用砖瓦盖起房子来。祖祖辈辈都是这么过的。可是我们盖不出世贸中心来(当然也引不来拉登……),美国在上世纪大批量建筑那些摩天大楼时,用的都是钢结构,所有的结构都是按标准生产的,施工的工程其实就是组装。
套用到软件工程上来,中国的程序员大部分还着眼于可以交付给客户的软件,这个软件中体现更多的是用户的思想以及他们的行业特点,而程序员的工作大部分还集中在把数据库的信息显示到客户可以看懂的界面上。简单,直接,如同黄土地上三间亮堂堂的大瓦房。
当然,在这些木匠瓦匠中,也有不安分的人,总是想着能够更省力。所以他们也创造了一些标准,一些可以直接拿来用的组件,比如门窗。可是当他们想统一大梁的标准时,用户不干了,我家的房子怎么能跟牛二家的房子一样?于是,木匠们用去继续寻找符合主人要求的木头去了。
中国的程序员也知道设计类库会为以后的工作节省大量的精力,可是项目的压力很重,老板总要求随时看到可以演示的东西,大部分老板是不会帮你Review代码的。于是,即使有程序员写了一个类库,也只是实现了当前项目需要的功能,没有测试、没有文档,使用范围也只是身边的伙伴。当下一次再碰到类似问题时,翻出原来的代码,发现老类库没办法适应新要求了,没有文档,连程序员自己也弄不清代码究竟是什么意思了。于是,索性再按新项目的要求写一段新的代码,这次连类库都省了,反正以后也用不到。
久而久之,程序员思维的中心便是用户界面,再也不会去想费时费力却得不到老板认可的类库了。所以,中国没有WTL、没有OpenNETCF。
其实所有程序员心里最先想到的是组件,用一个组件去实现某个功能,将所有的错误处理、边界控制,全都放在这里组件里,而不是交给用户界面去做。我们要对组件进行单元测试,而不应该把测试交给界面测试人员,界面测试人员应该更关注人机交互性能,而不应该在逻辑迷宫里转悠。
程序员看似无用的忙忙碌碌,也许会创造一个新的世界。学会组件化思考,我们以后写得不应该是应用程序,而应该是组件。新的一年快到来了,希望程序员们明年有个好心情,也希望更多的老板们可以像Google那样,多给程序员一点思考的空间,也许他们创造出来的就是下一个WTL。
分享到:
相关推荐
今天分享的主题是滴滴组件化实践与优化。第一部分介绍组件化,是 2015 年 6 月 1 号开 始进行的、到 2015 年 12 月 31 号上线,历时七个月的工作。第二部分介绍专项技术,包 括地图业务模块解耦、界面解耦的内容。第...
Vue组件化开发是一种高效、可复用且易于维护的编程方式,它将应用程序的不同部分划分为独立的组件,每个组件负责特定的功能。组件可以像拼积木一样组合在一起,构建出复杂的用户界面。在深入讨论Vue组件化之前,我们...
我们需要通过组件化的思想来思考整个应用程序,包括将一个完整的页面分成很多个组件,每个组件用于实现页面的一个功能块,每个组件又可以进行细分,而组件本身又可以在多个地方进行复用。 三、注册Vue的全局组件 ...
02-项目需求分析和组件化思考 03-跑通项目基础架构(一) 04-跑通项目基础架构(二) 05-目录规划指导并跑通第一个组件 06-添加container下各组件并跑通路由 07-react-addons-css-transition-group 08-NavMenu导航...
02-项目需求分析和组件化思考 03-跑通项目基础架构(一) 04-跑通项目基础架构(二) 05-目录规划指导并跑通第一个组件 06-添加container下各组件并跑通路由 07-react-addons-css-transition-group ...
### 容器化与组件化的概念 冯森林在MDCC 2016中国移动开发者大会上的演讲提出了从容器化到组件化的回归初心理念。容器化通常指使用容器技术来封装应用程序及其依赖项,实现环境隔离和快速部署。组件化则是将应用程序...
5. **组件化思考**:这种工作方式鼓励编写更小、更独立的CSS组件,每个组件都有其独特的属性选择器,减少了样式冲突的可能性,增强了代码的可维护性。 6. **注意事项**:使用`gulp-local-css`时,确保对HTML结构和...
现在ios流行的几种组件化解决方案都有各自的不足,要么有依赖的问题,要么有硬编码的问题,有没有一种完全解耦又便于项目管理的方案呢,经过仔细的研究和思考,笔者提出url-action这种组件化方案供大家探讨,欢迎留言!
摘要: 在基于面向服务体系架构(SOA)中,“组件化”是一个很重要的概念,如何进行“组件化”开发是搭建企业级业务基础平台时需要考虑的一个重要课题,本文通过建立业务组件(BC)接口模型及内部结构模型,提供了...
本文并不准备对组件化架构设计方案给出一份标准答案,而是希望通过我们的实践经验和思考分析,提供一种思路,对遇到类似问题的同学能有所启发。注:区别于功能模块/组件(比如图片库,网络库),
面向服务体系架构(Service-Oriented Architecture, SOA)作为一种设计理念,强调了组件化的开发和服务的重用,成为构建大型分布式系统的重要手段之一。本文旨在探讨SOA下的业务组件(Business Component, BC)开发...
本文将深入探讨SOA中的业务组件(Business Component, BC)的概念和技术实现,并通过具体的模型和案例来阐述如何基于Web服务和OSGi标准来进行组件化的开发。 #### 二、SOA与业务组件的基本概念 ##### 1. SOA简介 ...
XMIND是一款全球领先的“可视化思考”工具,为企业打造全新的可视化办公平台,协助用户快速捕捉创意与灵感。通过直观、友好的图形化操作界面,将思想、策略及商务信息转化为行动蓝图,全面提升企业办公效能。 灵活的...