2

SO社区,

是否有最佳实践编码标准,说明如何在传递给方法时始终如一地获得自动完成/内容辅助处理 Perl 模块的方法。例如:

sub main {
   my $moduleObject = MyNameSpace::ModuleObject->new();
   processModuleObject($moduleObject);
}

sub processModuleObject {
  my $moduleObject = shift;
  $moduleObject->...    <- that is were I want context assist/auto-completion to work

}

使其工作的最佳解决方法是以下我不满意的方法:

sub main {
   my $moduleObject = MyNameSpace::ModuleObject->new();
   processModuleObject($moduleObject);
}

sub processModuleObject {

  my $moduleObject = MyNameSpace::ModuleObject->new();
  $moduleObject = shift;
  $moduleObject->runLogic();

} 

是否有任何我们应该注意的编码最佳实践?

/托马斯

4

1 回答 1

0

您可以将任何内容传递给 processModuleObject 方法。Perl 中没有强类型参数和方法签名,或者至少没有强制执行它的机制。

EPIC IDE 怎么可能知道方法的参数是什么类型?我不知道。

不过,您可以使用 Moose 和可选的 Add-on-Module MooseX::Declare,因此您可以编写

method processModuleObject (MyNameSpace::ModuleObject $myobj) { ... }

但 EPIC 无法识别 Moose 语法和方法声明。所以你会失去 Eclipse“大纲视图”。但是你最多会得到一些详细的运行时错误,指出你在传递参数的地方输入不匹配错误。

恕我直言,如果有人以这种方式扩展 EPIC,使其成为“Moose-aware”,那就太酷了。

于 2011-09-18T14:38:26.503 回答