你只是看起来很努力

以下Java方法的大小是多少?

public Collection getDescription() {SystemLibrary systemLib = registry.get(SystemLibrary.class);Analysis analysis = systemLib.getCurrentAnalysis(registry);return getDescription(analysis);}

这个不起眼的方法查找某种系统库,检索Analysis并返回对该Analysis的描述。

但是你会说它有多大? 您会说这是三行代码吗? 如果是这样,您会说以下行为等效的方法长2行代码吗? 而且因为它更短会更好吗?

public Collection getDescription() {Analysis analysis = registry.get(SystemLibrary.class).getCurrentAnalysis(registry);return getDescription(analysis);}

还是您会说上述两个变体的大小相同,因为两者本质上都调用了相同的方法? 或者它们的大小相同,因为无论格式如何,它们都有三个职责。 还是因为他们只承担一项责任:返回分析说明?

方法大小的混乱会产生并产生影响。 之所以会出现这种情况,是因为项目一开始就无法达成衡量规模的目标单位。 它们之所以重要,是因为保持小的方法是SIPT结构原则的最基础,对于这些原则,存在降低成本的客观证据 。

值得考虑的一种非直观的大小量度是该方法编译到的字节码量。 等待! 在终止该浏览器并将其永久卸载之前,请考虑…

当然,很少有Java程序员会知道或关心上述方法编译为35个字节(确实如此)。 但是使用字节码具有绝对的双重优势(它完全是客观的(程序员无需再为方法长度为2或3行而费解),脚本和解析器可以自动连续地获取信息。

也没有永远的程序员必须学会如何在他们的头上做任何事情的可笑的编译Java。

假设您的项目同意将方法大小限制为50个字节。 Deborah很快-在几分钟之内-按照她的传统测量线标准,发现50字节大约是5行代码。 因此,她将自己的方法保持4行代码长,并且该项目的规模目标从来不必敲门。 (请在此处查看您是否可以在一分钟内发展这项技能。)

另一方面,Danny根据他的编程风格发现50字节是6行代码,因此将其方法保持5行长。 只要两者都满足在每次检入时解析已编译代码的脚本(和相关的自动武器),项目经理就可以安然入睡,知道质量(至少对于此特定代码属性而言)是安全的。

当然,有时方法会反映出他们的主人,并开始在腰部隆起。 当方法大小开始增加时,您的项目解释统计信息所依据的策略就变得至关重要。

实际项目了解小型方法的重要性以及具有一定灵活性的信任程序员的重要性。 实际项目不要求所有方法都小,而仅要求它们平均较小,并且,更重要的是,该平均值不会无限上升。

假设一个项目决定平均方法的长度必须小于50个字节。 然后,如果平均方法大小徘徊在47个字节长,则该项目可能允许团队进行稍大的更改,从而使平均长度达到48个字节。 (尽管有些程序员对永不感到骄傲,无论其平均大小如何,都永远不会增加其平均大小。)

但是该项目将不允许任何团队将这个数字拖到50字节或更长时间。

你疯了!

您认为50个字节(例如5行代码)太小了吗? 您认为任何大型Java软件项目都不可能拥有如此小的平均方法大小吗?

您的项目使用Jenkins吗? Jenkins的15,089个方法的平均长度仅为29个字节。 这大约是三行代码。

实际上,现代项目将阈值保持在较低水平几乎没有问题。 表1列出了流行的Java程序及其字节码平均方法大小的列表。

程序 平均方法大小(字节) 程序 平均方法大小(字节)
净额 20 ActiveMQ经纪人 32
JUnit的 23 弹簧 40
骆驼 27 Log4J 40
詹金斯 29 Tomcat(土狼) 44
Spoiklin Soice 29 卡桑德拉 53
Struts 30 Lucene 55
FitNesse 31 动物园管理员 55
Maven 35 卡塔琳娜 57

表1:平均方法大小(字节码)。

如果有的话,50个字节可能太宽裕。 也许40字节会更好。 或30。

摘要

大小很重要,因为大型方法比小型方法的成本更高。 这不是唯一重要的事情-许多其他基础结构原则也在等待中-但它可观地回报了为保持其控制力而付出的努力。 选择客观,自动的测量程序,以及就不得超过该阈值的阈值达成普遍共识,可确保此类投资取得成果。

翻译自: https://www.javacodegeeks.com/2016/08/method-look-big.html

你只是看起来很努力

你只是看起来很努力_我的方法在这方面看起来很大吗?相关推荐

  1. 英语不好怎么自学python_为什么我就是学不好英语啊?我明明很努力,但是为... 我英语一般,但我很想学Python这个编程语言,行不?...

    导航:网站首页 > 为什么我就是学不好英语啊?我明明很努力,但是为... 我英语一般,但我很想学Python这个编程语言,行不? 为什么我就是学不好英语啊?我明明很努力,但是为... 我英语一般 ...

  2. 访问页面要看什么数据包_白板送票 | 我们为什么要看音乐节?

    在我读初中的时候,曾经有一段时间是很向往文艺的. 书包要背和别人不一样的双肩帆布背包:水笔一定是晨光文具买的pilot:自行车要骑带竹篮子的不同于停车棚大大小小的捷安特公路自行车:别人看<男生女 ...

  3. 华为怎么用手机看时间到读秒_华为手机灭屏也可以看时间?其实设置方法很简单,不会有些可惜了...

    华为作为手机界名副其实的大佬,而且华为手机的口碑也是非常不错的.那么为什么会有这么多人喜欢华为手机呢?主要是华为手机的质量高,并且用很多实用的小功能,比如说神奇的灭屏显示功能等等,今天就给大家分享几个 ...

  4. 一分钟学会看k线图_教你一分钟怎样学会看k线图(纯干货)

    K线图最早是日本德川幕府时代大阪的米商用来记录当时一天.一周或一月中米价涨跌行情的图示法,后被引入股市.K线图有直观.立体感强.携带信息量大的特点,蕴涵着丰富的东方哲学思想,能充分显示股价趋势的强弱. ...

  5. 一分钟学会看k线图_教你一分钟怎样学会看k线图

    公众号上提供免费诊股功能,每天分析大盘,带你捕捉牛股 K线图最早是日本德川幕府时代大阪的米商用来记录当时一天.一周或一月中米价涨跌行情的图示法,后被引入股市.K线图有直观.立体感强.携带信息量大的特点 ...

  6. 前端为什么说github很重要_私域流量|为什么说私域流量很重要?

    前面几篇文章我们分析了私域流量的概念,现在我们来分析一下私域流量的好处.为什么说私域流量很重要呢? 首先,私域流量可以把营销成本降低,较快地获取用户反馈. 之前在公域流量上进行的交易,都是你买我卖,你 ...

  7. 无线网络的网速很慢_家里无线网络每天不定时段出现网速很慢或者直接无连接,这是怎么回事?...

    我是老陈,10年互联网维护经验告诉你常见无线网络卡或慢的原因有以下几点: 一.运营商问题 上图是运营商的网络,会出现以下几种情况导致无线卡或慢: 光猫性能差,不稳定或散热不好 链路拥塞 运营商链路质量 ...

  8. 为什么很努力,却似乎停在原地

    「心智探寻」这个系列源于通过微信进行的1v1对话,对话系列皆已得到分享授权,所有对话者化名都是Lucy(或Luke).文本除了极少量调整之外和原对话几乎完全保持一致.回复「对话」或「心智探寻」(或点击 ...

  9. uc浏览器怎么看历史记录 uc浏览器网页历史记录查看方法

    很多用户发现UC浏览器的历史记录查看不了,怎么找也找不到,不要急,它只是换了个位置而已,那么下面小编就来跟大家说一说UC浏览器网页历史记录查看方法. 方法一:点击右上角的UC图标,在弹出来的菜单中你就 ...

最新文章

  1. CentOS 7 Linux 的初始化系统(系统服务管理和控制程序/Init System) -- systemd 详解
  2. vlc-qt编译 linux,记录一次搞vlc官方源码中Qt示例工程的过程,文件路径对话框
  3. 昨天发现,博客排名进行了两次
  4. database如何管理超过4GB的文件
  5. ffmpeg yuv数据存储方式_一文理解 YUV
  6. android 屏幕坐标系,android 屏幕坐标总结
  7. 网络协议学习---LLDP协议学习
  8. android开发笔记之materialish-progress
  9. CuraEngine
  10. 滞回比较器 万字形状
  11. Valentino Beauty华伦天奴美妆即将登陆中国市场
  12. Java多线程(上篇)
  13. H5 页面适配几种展现形式
  14. Mendix敏捷开发零基础学习《二》-进阶(Microflow微流、表单验证、运算符、条件判断、数据嵌套、触发器、Debug问题跟踪、版本管理)
  15. VMware虚拟化方案之备份ESXi虚拟机
  16. 韵语编年之十五:2004—— 2007.【 附:《吴忠史话》----吴忠的历史大事与名人】...
  17. 羲云社区团购微信小程序 活动详细页 (界面及功能设计)
  18. 智慧景区电子票务系统人脸识别售检票基本思路
  19. 涉密计算机能用固态硬盘,质量不行数量来凑?RAID1能保护固态硬盘数据安全吗...
  20. 更新时被锁定SVN: Working copy '' locked

热门文章

  1. CF1472(div3):总结
  2. T183637-变异距离(2021 CoE III C)【单调栈】
  3. jzoj4637-大鱼海棠【博弈论】
  4. hdu3666-THE MATRIX PROBLEM【差分约束,自然对数】
  5. P3538-[POI2012]OKR-A Horrible Poem【hash,字符串】
  6. 【期望】期望分数(金牌导航 期望-4)
  7. 【动态规划】机器分配 (ssl 1639)
  8. 线段树动态开点区间加区间求和
  9. codeforces E. Game with String 概率
  10. 14、java中的集合(1)