日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
干嘛不去掉“I”和“Impl”?

今天早上我仔細研究TopShelf項目的源代碼,想追查里面一個API的修改,突然發(fā)現(xiàn)TopShelf終于向新近流行的去掉接口名稱上的“I”字母做法屈服了。在.NET上這還是個新事物,使用Java的人這樣做了有一段時間了,但在.NET里很多都還是新事物。這些可不是從ruby偷來的。

創(chuàng)新互聯(lián)建站專業(yè)為企業(yè)提供岳塘網(wǎng)站建設、岳塘做網(wǎng)站、岳塘網(wǎng)站設計、岳塘網(wǎng)站制作等企業(yè)網(wǎng)站建設、網(wǎng)頁設計與制作、岳塘企業(yè)網(wǎng)站模板建站服務,10余年岳塘做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡服務。

如果你對此不太熟悉,我先解釋一下,傳統(tǒng)的習慣是在接口的名稱前加入一個毫無必要的“I”字母,事實上這個接口的使用者并不在意這個接口前是否有個“I”字母,這種加入“I”字母的形式是一種匈牙利標記法,文明世界里幾乎一致認為這是一種糟糕的做法。

所以你的代碼…

 
 
 
  1. public interface ISomeBehavior { } 

..應該寫成..

 
 
 
  1. public interface SomeBehavior { } 

這樣合情合理。而有問題的是當你把一個實現(xiàn)這個接口的類像下面這樣命名時:

 
 
 
  1. public interface SomeBehavior { }    
  2.  
  3. public class SomeBehaviorImpl { }   

我不知道把接口上的“I”移到實現(xiàn)類上然后再加三個字母究竟有什么好處。除了讓我的指頭關節(jié)多活動幾下還能做什么?難道這個程序的使用方還在意這是一個沒有“I”的接口實現(xiàn)類嗎?

從一些基礎層面上講,接口就是個契約。契約聲明一個類要實現(xiàn)接口提供的特定用途的一些方法和屬性。從另一個角度看這個問題可以觀察接口的行為。

考察一下.NET里提供的IDisposable這個接口。沒有一個DisposableImpl伴隨著它。這個接口描述的是一個實現(xiàn)類型的特征,它可以代表任何的東西。

接口跟實現(xiàn)類并不是一對一的關系。事實上,一個類可以實現(xiàn)多個接口。引用Brett L. Schuchert的例子:

 
 
 
  1. class Manager : public ISing, public IDance {} 

保持簡潔的接口,讓manager們盡情放縱

我相信你看到這里已經(jīng)露出憤怒的表情了,會想“那好,聰明人,你想讓我們怎么做?”

對于我,我喜歡這個“I”字母,但喜歡的是它讀起來像一種聲明。

 
 
 
  1. public interface IReadFiles { } //我讀取文件  
  2.  
  3. public interface ICalculateRates { } //我計算比例  
  4.  
  5. public interface ISingAndDance { //我唱歌跳舞}  

你會發(fā)現(xiàn)這和傳統(tǒng)的“I”/“Impl”用法相反。但這很酷不是?每個“I”都代表我,但這該死的“Impl”里不是。

【編輯推薦】

  1. Java開發(fā)者需要注意的十條法則
  2. 新手入門JavaWeb三層架構的配置詳解
  3. Java垃圾收集器使用小訣竅
  4. 高性能Java代碼之內(nèi)存管理

新聞名稱:干嘛不去掉“I”和“Impl”?
標題路徑:http://m.5511xx.com/article/ccohijg.html