你只是看起来很努力_我的方法在这方面看起来很大吗?
你只是看起來很努力
以下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
你只是看起來很努力
總結
以上是生活随笔為你收集整理的你只是看起来很努力_我的方法在这方面看起来很大吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 百川智能发布Baichuan2-53B,
- 下一篇: 懒惰学习_懒惰评估