小编Ave*_*yne的帖子

你使用get/set模式(在Python中)吗?

使用get/set似乎是Java中的常见做法(出于各种原因),但我几乎看不到使用它的Python代码.

为什么在Python中使用或避免使用get/set方法?

python getter-setter

75
推荐指数
6
解决办法
9万
查看次数

吸毒者和二传手:代码气味,必要的邪恶,或者没有他们的生活

可能重复:
Allen Holub写道"你永远不应该使用get/set函数",他是否正确?

是否有一个良好的,没有,一个非常充分的理由,要通过使用getter和setter方法的面向对象语言的所有麻烦吗?使用对属性或方法的直接引用有什么问题?人们不想在礼貌的公司谈论某种"语义掩盖"吗?当有人走出去说"你应该写大量的代码以获取吸气剂和制定者"时,我是否太累了并且睡着了?


一年后的后续行动:

它似乎是Java的常见现象,而不是Python. 我开始怀疑这是否更像是一种文化现象(与语言的局限性有关),而不是"圣人的建议". 由于我不使用Java编程(目前可供选择),因此无法进行评估.

就我而言,目前(截至本文写作2010-03-22)-1问题得分已经完成了lulz.有趣的是,有一些特定的问题被低估了,不是因为它们是"坏问题",而是因为它们触及某人的原始神经.

那么让我们来解决问题.我重复一遍:

What's wrong with just using a direct reference to a property or method?

这是不成文的推论:

Are we so undisciplined as programmers that we can't keep our hands off of things that are clearly marked "no touchy"?

oop

10
推荐指数
1
解决办法
3986
查看次数

关于Apple Mail的.emlx数据结构的文档(用于转换目的)?

这似乎是一个罕见的宝石:在哪里可以找到Apple Mail的.emlx文件结构的文档(及其部分变体,以及目录结构的含义).这些文档似乎不存在于Apple的网站上,也无法通过Google找到任何合理的提及.

关键是要创建一个bash/ruby​​/python/insert-script-langauge-here脚本,将这些文件的混乱转换为可用/柔韧的东西,如Maildir或Mbox.最终目标是将用户/ Library/Mail商店的快照迁移到现有的Dovecot设置中,该设置使用Maildir的形式.

是的,我知道这个程序,但它没有解决我追求的解决方案.手动转换20个邮箱并手动将它们插入现有安装将需要更多的时间,而不仅仅是编写将消息摘要到其他内容的脚本,然后自动将它们存储在应有的位置.没关系,可能有六个以上的用户需要这个程序.所以值得花时间编写脚本.

如果该问题正在等待删除,请投票关闭此问题的副本,而不是投票支持此问题关闭.出于某种原因,使用Chrome作为浏览器时偶尔会出现发布故障.

后续行动:看起来格式确实没有记录,大多数消息来源都对其进行了逆向设计.如果我有时间,我会尝试自己这样做; 如果我成功了,我会发布第二次跟进,了解我的调查结果.

email apple-mail data-structures

6
推荐指数
1
解决办法
4312
查看次数

如何在不更改父项的情况下从子项中删除继承的对象

(注意:更改名称以保护有罪)

因此,假设我正在对VisualCruft 8进行修改(早已被供应商停止),并将这些修改应用于"公司A"的ERP软件(很久以后被"公司S"收购,然后他们停止了一些软件多年后,由于VisualCruft自行停产).

我经常需要做的一个修改是向表单添加,更改或删除字段.这是大多数ERP软件的基础,每年都会出现几次.我们的ERP软件包的布局,我们将其称为"HotPockets版本3",将表单划分为"类库",而这些类库只是用于保存表单对象的桶.当然,"形式"中嵌入了"控制"对象.

每次安装HotPockets 3时,您都会获得表单的系统版本,以及单独的类库中的子版本,它只是父类的重新类,因此表单,控件,业务逻辑等都存在在孩子身上 原始("公司A")供应商声明的意图是允许您对覆盖父级的子进行更改,同时允许所述供应商向父级发布补丁/更改/任何内容.理论上这看起来很棒.在实践中,存在问题.具体来说,当在父级中定义控件本身并且不更改父级时,如何删除或更改表单上的控件?目的是用具有不同行为的不同控件替换控件,尽管在某些情况下我还必须完全删除控件.所以,您也可以将其称为"如何在不改变父项的情况下从子项中删除继承的对象"?

有一些已知的解决方案,但我问这个问题,因为我想看看是否有比我提供的更好的答案. 为避免重复答案,我将列出当前已知的解决方案,但请记住,我正在寻找此处未列出的内容.

解决方案不当1

虽然我不应该修改父代,但我确实可以访问父代码.我可以简单地记下所讨论的控件的所有属性和方法,从父级删除控件,然后返回到子级并重新实现所有属性和方法.对于大幅度的更改,例如用某个网格替换单个文本框,这是可行的.然而,它完全"违反规则",并且为此产品提供支持的VAR有点皱眉(注意:VAR不是"公司A"或"公司S").请记住,不仅原始供应商已经解散,而且产品和语言也已不复存在.

解决方案不当2

"隐藏"父窗体上的组件,然后(如果合并新组件)将新更改添加到子窗体.这在实践中听起来很棒,直到你意识到所有旧代码都挂钩到了父代,现在......它是隐形的.这意味着重命名父组件的版本,并通过解决方案1中列出的所有"端口属性和方法".在这种情况下......为什么我要再次这样做?

解决方案不当3

对于那些我希望控件消失的情况,我可以通过设置visibility属性来隐藏子控件.这不会删除或更改任何现有代码,一切都会继续运行.然而,绑定到它的控件和数据库字段现在"捆绑"并且不可用,除非我查看解决方案1或解决方案2之类的东西,因为任何试图弄乱控件的操作都可能在调用期间导致副作用,和/或以编程方式替换控件下面的数据使用户无法观察发生的情况.而这只能解决视觉上消失的控制问题- 它并没有解决它的问题.

极不正确的解决方案4

该死的鱼雷,从父母那里删除控制,全力以赴!

显然,这是一个非常糟糕的决定......

你会注意到所有的解决方案都涉及触摸父母,这是我不应该做的事情 - 这使我们完整地回答了这个问题.

其他解决方案不可用

  • 用其他东西替换HotPockets版本3.这不是我决策的范畴.

  • 使用(在此处插入喜欢的宠物语言)重写我需要的HotPockets版本3.虽然我不介意这样做 - 我确实拥有像大多数人一样的自己的宠物语言 - 但这不是一种可能性,因为VisualCruft几乎与它本身一起工作.相信我,这比在VisualWidget 3.14159HeyDoYouSmellCoffee甚至ILikeSnakes中编写扩展所需的努力大10倍,找出某种跨语言调用,集成它,测试它,让IT管理人员注销它,让VAR也签署它,而不是只是坚持使用VisualCruft中的本机工具.

  • 让VAR做到这一点.不要采取错误的方式,VAR做得很好,提供持续的支持,并提供了许多有用的修改.但是有成本因素可以发挥作用,如果变化是由我而不是VAR进行的,那么它更具成本效益.这根本与他们无关.

forms oop erp subclassing

5
推荐指数
1
解决办法
159
查看次数

每个SysAdmin都应该知道什么编程?

这是这个问题的镜像:https: //serverfault.com/questions/4176/what-sysadmin-things-should-every-programmer-know

原作由Nathan DeWitt发布.应该归功于他.如果您有一个服务器故障帐户,请访问他原来的问题,并提出它以表示对此查询的感谢.

用内森的话说:

作为SysAdmin,我们倾向于将程序员视为理所当然.我没有一个优秀程序员的几次真的让我很欣赏你们所做的事情.当我们冒险进入一个没有程序员的环境时,你能为我们提供什么样的智慧?

sysadmin

4
推荐指数
1
解决办法
1922
查看次数

Windows CE注册表设置 - 永不关闭电源

我有一个独特的工业应用程序,我不希望Windows CE设备断电(关机切断无线连接,导致延迟重新建立到服务器的链接).问题:硬重置会删除设备的"永不关闭"设置,使其进入休眠状态.避免硬重置不是一种选择,因为设备有时需要它们.

控制它的注册表项是什么?这个想法是,使用注册表文件,设备将在启动时将密钥合并到系统中,从而无需手动设置它.


为了节省时间,答案在下面的评论中,所以我在这里重新粘贴以供参考:


注册表项是:[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Power\Timeouts]"BattSuspendTimeout"= dword:00000000

registry windows-mobile

2
推荐指数
1
解决办法
2万
查看次数