您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

Python设计指南:

5b51 2022/1/14 8:21:19 python 字数 4266 阅读 501 来源 www.jb51.cc/python

我是一位非常有经验的开发人员 - 多年来在Delphi,C#和C方面做了很多繁重的工作.我一直非常重视结构化编程,OOP,松耦合模块化设计等指南 - 因为我使用的所有语言都有内置的强制执行这些概念的方法 - 访问控制,静态类型,接口和抽象类支持等 - 我依靠这些来构建我的代码.现在,我已经用Python乱画了几个月.我对它的许多精彩功能印象深刻 - 但我非常

概述

我是一位非常有经验的开发人员 – 多年来在Delphi,C#和C方面做了很多繁重的工作.我一直非常重视结构化编程,OOP,松耦合模块化设计等指南 – 因为我使用的所有语言都有内置的强制执行这些概念的方法 – 访问控制,静态类型,接口和抽象类支持等 – 我依靠这些来构建我的代码.

现在,我已经用Python乱画了几个月.我对它的许多精彩功能印象深刻 – 但我非常怀念内置的约束,这使得代码模块化和组织变得容易.而且,不幸的是,我看到很多用Python编写的“意大利面条代码”,甚至来自非常可敬的来源.我不会单独出去任何人,但是我有一些由大联盟pythonistas编写的书籍,其中充满了充满设计的例子(更好的说 – “反设计”)让我不寒而栗.在我看来,因为Python很容易使用,所以它也很容易被滥用.

我在Python编写代码时会尝试自我约束,但我发现需要执行大量额外的工作,而且我必须根据自己的设计记忆设置并遵守约束,而无需语言帮助一点都不而且由于没有“编译时间”检查,这是非常困难的 – 通常你不会发现设计缺陷,直到你真正运行该段代码.

所以,我正在寻找非常具体的信息:一些例子或更好的仍然是一本关于WELL STRUCTURED Python设计和设计技术的书 – 如何最好地实现封装,间接,非常松散耦合的设计等.

来自一位着名的Python书籍作者的糟糕设计IMO – (混淆)

def populateList(self,selecteddisk=None):
selected = None ***#Bundling - coupling:*** 
self.listWidget.clear()
for disk in self.disks.inOrder():
item = QListWidgetItem(QString("%1 of %2/%3 (%L4)") \
.arg(disk.name).arg(disk.owner).arg(disk.country) \
.arg(disk.teu))
self.listWidget.addItem(item)
***#Bundling - coupling:*** 
if selecteddisk is not None and selecteddisk == id(disk):
    selected = item
    if selected is not None:
    selected.setSelected(True)
    self.listWidget.setCurrentItem(selected)

而且,由于“编译时间”检查似乎永远不会帮助我找到普通的逻辑错误,因此它更加困难 – 通常在实际运行该段代码之前,您不会发现设计缺陷.

Python designs and design techniques …
how to best implement encapsulation,

通过封装.在像Java和C这样的语言中,“封装”已经发展成“在整个地方使用私有东西”.在Python中,根本不支持.

我们都是成年人.

你仍然像其他语言一样进行封装.但是,如果没有私有这个词.

Python为__getattribute__提供了属性,装饰器和覆盖,以实现各种封装技术.

indirection,

通过引用其他对象.我不清楚你在这里遇到了什么具体问题,但也许你已经将一些错误类型的参数传递给了一个函数.避免这种情况的方法是阅读您为自己编写的文档字符串.

very loosely coupled designs,etc.

通过依赖注入.再次.就松散耦合而言,Python就像其他语言一样工作.

你应该大量调查 – 并使用 – docstrings.

您可能希望使用http://sphinx.pocoo.org从文档字符串生成漂亮的文档.

您还可以使用Python的内置help()函数来读取编写代码时编写的文档字符串.

总结

以上是编程之家为你收集整理的Python设计指南:全部内容,希望文章能够帮你解决Python设计指南:所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶