免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1393 | 回复: 2

Moose内部属性调用,直接or间接? [复制链接]

论坛徽章:
0
发表于 2013-06-02 19:28 |显示全部楼层
我们知道,Moose会自动为每一个属性创建一个reader和一个writer,这样我们就可以直接使用。在Package外,毫无疑问,应该使用reader和writer进行访问。而在package内,你会选择直接访问还是仍旧使用reader和writer呢?如下面两种trim方法你会选哪个?
先谈点我个人的考虑:
第一种直接方法,简单明了,不需要临时变量,但是缺点是如果你对desc使用了before,after等语法糖时,在这里是不起作用的;
第二种间接方法,调用了一次reader,又调用了一次writer,复杂了点,但符合封装的特性。
  1. package Foo;
  2. use Moose;

  3. has 'desc' => (
  4.     is  => 'rw',
  5. );

  6. # trim method 1
  7. sub trim_desc1 {
  8.     my $self = shift;
  9.     $self->{desc} =~ s/^\s*//;
  10.     $self->{desc} =~ s/\s*$//;
  11. }

  12. # trim method 2
  13. sub trim_desc2 {
  14.     my $self = shift;
  15.     my $desc = $self->desc;
  16.     $desc =~ s/^\s*//;
  17.     $desc =~ s/\s*$//;
  18.     $self->desc($desc);
  19. }

  20. __PACKAGE__->meta->make_immutable;
复制代码

论坛徽章:
1
辰龙
日期:2014-05-15 19:37:15
发表于 2013-06-03 14:07 |显示全部楼层
如果选择了用 Moose 就重点要考虑的是封装的特性对吧。所以选择不用说。。

论坛徽章:
0
发表于 2013-06-04 13:24 |显示全部楼层
回复 2# iakuf


   即使是在package里面吗? 感谢您的回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2019中国系统架构师大会

【数字转型 架构演进】SACC2019中国系统架构师大会
2019年10月31日~11月2日第11届中国系统架构师大会(SACC2019)将在北京隆重召开。四大主线并行的演讲模式,1个主会场、20个技术专场、超千人参与的会议规模,100+来自互联网、金融、制造业、电商等领域的嘉宾阵容,将为广大参会者提供一场最具价值的技术交流盛会。




----------------------------------------

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP