【发布时间】:2011-02-25 09:09:02
【问题描述】:
在我目前的工作中,我正在构建一套严重依赖对象的 Perl 脚本。 (在哈希上使用 Perl 的 bless() 以尽可能接近 OO)
现在,由于缺乏更好的表达方式,我公司的大多数程序员都不是很聪明。更糟糕的是,他们不喜欢阅读文档,而且似乎很难理解其他人的代码。牛仔编码是这里的游戏。每当他们遇到问题并试图解决它时,他们都会想出一个可怕的解决方案,但实际上什么都解决不了,而且通常会使情况变得更糟。
坦率地说,这导致我不相信他们用鸭子类型语言编写的代码。举个例子,我看到太多的问题是他们没有因为滥用对象而没有得到明确的错误。例如,如果类型A 具有成员foo,并且他们执行instance->goo 之类的操作,他们不会立即发现问题。它将返回一个空值/未定义值,他们可能会浪费一个小时来寻找原因。然后最终更改其他内容,因为他们没有正确识别原始问题。
所以我正在集思广益,寻找一种方法来保留我的脚本语言(它的快速发展是一个优势),但在对象未正确使用时给出明确的错误消息。我意识到,由于没有编译阶段或静态类型,因此错误必须在运行时出现。我没问题,只要用户收到一个非常明确的通知说“这个对象没有 X”
作为我的解决方案的一部分,我不希望他们在尝试使用方法/变量之前检查它是否存在。
尽管我的工作是使用 Perl,但我认为这可能与语言无关。
【问题讨论】:
-
鉴于您处于这种环境中,用 Perl 编写代码,同时承认您的同事不理解它……听起来您是问题的一部分!
-
我没有选择使用 Perl。根据管理层的说法,要么是这个,要么是 sh。
-
我处于某种领导地位,但官僚机构会做出技术决策。我正在努力改变这一点,但我仍然没有我需要的影响力。
-
听起来你有一个社会问题,你正试图用技术来解决。该技术将在短期内有所帮助,但除非您教育您的同事,而不是与您合作,否则他们可能会反感这些限制,将其视为障碍,并绕过它们。
-
你的意思是你想让
$instance->{member}抛出一个错误,这样程序员就不会抓住对象的内脏和内部使用的访问器方法?
标签: perl language-agnostic duck-typing static-typing