Python设计指南:

Python设计指南:,第1张

概述我是一位非常有经验的开发人员 - 多年来在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)
最佳答案我发现在编译之前编写代码本身时,实现和编译遵循约束的代码需要花费很多额外的工作,这些代码只是基于我自己的设计内存而没有语言的帮助.有些IDE会提供帮助,但语言本身并没有给我任何帮助.

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

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设计指南:所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1205796.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存