英文连词_连词我们…讨厌
英文連詞
最近,我寫了與實(shí)現(xiàn)相關(guān)的名稱,并提供了一些示例,這些示例由于方法名稱與主體之間的緊密關(guān)系而導(dǎo)致方法名稱不正確。
有一會兒,我們有以下代碼:
boolean isComplexOrUnreadableWithTests() { return (complex || unreadable) && tests.exist(); }只是為了提醒您上下文:應(yīng)該確定我們是否可以進(jìn)行重構(gòu):
if (code.isComplexOrUnreadableWithTests()) {doRefactoring(code); } 最近,我告訴您該名稱是錯(cuò)誤的,因?yàn)樗c實(shí)現(xiàn)有直接關(guān)系。 但是,這不是唯一的問題。 在方法名稱中使用連接詞是一個(gè)跡象,表明我們找不到正確的名稱,而只是列出了我們已經(jīng)完成的所有已知操作。 此列表與實(shí)現(xiàn)或邏輯相關(guān)都無關(guān)緊要。
關(guān)于實(shí)現(xiàn)還是邏輯?
如果我想將isComplexOrUnvisibleWithTests()方法的名稱更改為:
boolean isJustifiedAndPossible() { return (complex || unreadable) && tests.exist(); }會更好嗎? 現(xiàn)在不是基于邏輯的名稱嗎?
我們有關(guān)于證明的部分:
(complex || unreadable)關(guān)于重構(gòu)的可能性:
tests.exist()當(dāng)實(shí)現(xiàn)更改時(shí),我們不需要更改名稱,對嗎? 好吧,不完全是。 讓我解釋。
我們沒有將面向?qū)崿F(xiàn)的名稱更改為面向邏輯的名稱。 我們只是混合了。 我們使用已知的詞(可能來自領(lǐng)域)將實(shí)現(xiàn)隱藏在這兩個(gè)術(shù)語后面。 但是,通過閱讀方法的名稱,我們?nèi)匀恢绬栴}的答案如何。 而且我們?nèi)匀徊恢雷畛醯膯栴}是什么。
當(dāng)結(jié)果為布爾值時(shí),我假設(shè)所問的問題類似于“是嗎?” 。 以給出的名稱,我們?nèi)匀粵]有關(guān)于“某物”的任何信息。
同樣,該方法的名稱沒有我們想象的那么持久。 如果在開發(fā)過程中,我們決定從代碼中刪除tests.exist()部分,則需要在名稱中反映此更改并將其更改為:
boolean isJustified() { return complex || unreadable; }此外,您可能會注意到,現(xiàn)在名稱可以準(zhǔn)確告訴您問題所在。
但是,初始更改需要在方法主體內(nèi)部及其名稱上進(jìn)行更改。
遺失詞
除了方法本身的名稱之外,在某些情況下,我們使用已知術(shù)語來描述新事物,但未命名該事物,可能會導(dǎo)致更多問題:
- 交流 -每次談?wù)撛撔g(shù)語時(shí),您都會對其進(jìn)行解釋。 您只是想讓另一個(gè)人進(jìn)入相同背景的理解。 用一個(gè)單獨(dú)的短語來表達(dá)“ The Something”會更好嗎?
例如,您可能會想像一下如果您不能使用設(shè)計(jì)模式的名稱,與其他開發(fā)人員的對話會是什么樣子。 這些對話肯定會更長,并且會帶來更大的誤解風(fēng)險(xiǎn)。
缺少術(shù)語會導(dǎo)致完全相同的問題。 - 復(fù)制 –有人可能會問相同的問題,但是由于缺少適當(dāng)?shù)挠谜Z,他們不能百分百確定問題是否真的相同,是否有相同的意圖。 在這種情況下,他們有機(jī)會選擇一種更簡單的方法,只編寫可以給他們答案的代碼。
- 提出相同的問題 –缺少術(shù)語意味著當(dāng)我們要提出相同的問題時(shí),很難找到此代碼。 為什么? 因?yàn)槲覀儾恢酪獙ふ沂裁础?或者我們可能知道,但是代碼本身無法表達(dá)意圖,我們正在尋找的內(nèi)容與編寫的內(nèi)容之間可能沒有任何關(guān)系。
如何發(fā)現(xiàn)問題?
嗯,這并不總是像給定示例中那樣容易。 但是,有兩件事可以幫助您確定名稱是好還是需要改進(jìn):
- 結(jié)合語 –我們討論了單一責(zé)任原則 ,因此在編寫代碼時(shí)應(yīng)用此原則很重要。 并沒有出現(xiàn)不遵循SRP的征兆嗎? 當(dāng)我們使用“和”或“或”之類的詞時(shí),我們通常談?wù)摰牟恢挂患隆?
只要在變量,方法或類的名稱中發(fā)現(xiàn)連詞,就應(yīng)將其視為警告。 有很大的機(jī)會需要改進(jìn)。 - 正文更改會導(dǎo)致名稱更改 -如果代碼更改不能更改功能背后的全部原理,但仍需要更改方法/類的名稱,則表明該名稱可能未表示真實(shí)意圖。
在這種情況下,我們應(yīng)該重新考慮名稱并加以改進(jìn)。
你好,我的名字是…
我知道有時(shí)候找到一個(gè)好名字要比編寫實(shí)現(xiàn)難得多,但這并不意味著我們不應(yīng)該嘗試。 使名稱盡可能具有描述性和準(zhǔn)確性符合我們自己的利益。 這將節(jié)省我們將來的時(shí)間。
翻譯自: https://www.javacodegeeks.com/2016/06/conjunctions-we-hate.html
英文連詞
總結(jié)
以上是生活随笔為你收集整理的英文连词_连词我们…讨厌的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交流伺服系统设计指南_交流设计
- 下一篇: 消息称苹果计划将其在印度的生产规模扩大5