免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1337 | 回复: 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里面吗? 感谢您的回复!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP