zoukankan      html  css  js  c++  java
  • 第7.2节 关于面向对象设计的一些思考

    以下是老猿在学习《Python基础教程》第3版(Magnus Lie Hetland著,袁国忠译)过程中记录的一些笔记,老猿觉得这些理念非常好,因此总结出来供大家共享:
    1.    将相关的东西放在一起。如果一个函数操作一个全局变量,最好将它们作为一个类的属性和方法;
    2.    不要让对象之间过于亲密。方法应只关心其所属实例的属性,对于其他实例的状态,让它们自己去管理就好了;
    3.    慎用继承、尤其是多重继承。继承有时很有用,但在有些情况下可能带来不必要的复杂性。要正确地使用多重继承很难,要排除其中的bug更难;
    4.    保持简单。让方法短小紧凑。一般而言,应确保大多数方法都能在30秒内读完并理解
    5.    对于其余的方法,尽可能将其篇幅控制在一页或一屏内。

    确定需要哪些类以及这些类应包含哪些方法时,尝试像下面这样做(老猿认为,下面这些思想有点敏捷开发的味道):
    1.    将有关问题的描述(程序需要做什么)记录下来,并给所有的名词、动词和形容词加上标记;
    2.    在名词中找出可能的类,在动词中找出可能的方法,在形容词中找出可能的属性。将找出的方法和属性分配给各个类;
    3.    有了面向对象模型的草图后,还需考虑类和对象之间的关系(如继承或协作)以及它们的职责。为进一步改进模型,可像下面这样做。
    1)    记录(或设想)一系列用例,即使用程序的场景,并尽力确保这些用例涵盖了所有的功能。
    2)    透彻而仔细地考虑每个场景,确保模型包含了所需的一切。如果有遗漏,就加上;如果
    3)    有不太对的地方,就修改。不断地重复这个过程,直到对模型满意为止。
    4)    有了你认为行之有效的模型后,就可以着手编写程序了。你很可能需要修改模型或程序的某些部分,所幸这在Python中很容易,请不用担心。只管按这里说的去做就好

    老猿Python(https://blog.csdn.net/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。
    欢迎大家批评指正,谢谢大家关注!

  • 相关阅读:
    PAT甲级1107. Social Clusters
    PAT甲级1103. Integer Factorization
    PAT甲级1098. Insertion or Heap Sort
    hihocoder 162周 1323 : 回文字符串
    PAT甲级1095. Cars on Campus
    PAT甲级1089. Insert or Merge
    PAT甲级1087. All Roads Lead to Rome
    PAT甲级1076. Forwards on Weibo
    PAT甲级1066. Root of AVL Tree
    PAT甲级1057. Stack
  • 原文地址:https://www.cnblogs.com/LaoYuanPython/p/11087711.html
Copyright © 2011-2022 走看看