读《凌波微步:软件开发警戒案例集》
这本书不是告诉我什么是好的,而是告诉我什么是不好的,每一个案例的开头都给出了写的不好的代码的例子,然后解释清楚,这么做有什么不好的,改要怎么改的同时,为什么好的是这个样子的。
“方以类聚,物以群分”,是古人对客观世界的看法,也是面向对象理论用类和对象概括现实世界各种应用模型和客观事实的基本依据。
作者在属性还是方法一章重点不是在于分析分析属性和方法孰优孰劣,而是要弄清楚,在编写组件和类库时,到底哪些功能通过方法提供,哪些功能通过属性输出。
作者提到“天鹅的故事”,类名叫“天鹅”,必须赋予天鹅一些特征,才能用这个类实现出具体的对象来。
羽毛的颜色:①公有成员变量定义②属性
好处:①属性Set方法里,可以直接判断,如果设置颜色不相符,立刻抛出异常
②内部整数到外部字符串的转换可以在Get方法里实现
③Set方法窗口重画
飞:①方法②属性
都可:实现一个“飞”的方法
定义一个“天鹅正在做什么”的属性,取值“睡”,“飞”,“吃”等,显得神秘高深
使用属性还是方法,选择不当的话,会埋下错误隐患。
总结来看,属性是一种高级的面向对象特征,但它和成员变量、方法一样,是编写类库或者具体组件的常用方法;属性的最大优点是保证数据及其相关操作的完整和统一;不要把属性和方法所需的参数混为一谈;成员变量易于定义比较单纯的数据元素,方法适于实现功能操作,属性则用于定义与某些功能操作关系紧密的数据元素。