自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

干嘛不去掉“I”和“Impl”?

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

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

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

所以你的代碼…

 

  1. public interface ISomeBehavior { } 

..應(yīng)該寫成..

 

  1. public interface SomeBehavior { } 

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

 

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

 

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

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

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

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

 

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

保持簡(jiǎn)潔的接口,讓manager們盡情放縱

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

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

 

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

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

【編輯推薦】

  1. Java開發(fā)者需要注意的十條法則
  2. 新手入門JavaWeb三層架構(gòu)的配置詳解
  3. Java垃圾收集器使用小訣竅
  4. 高性能Java代碼之內(nèi)存管理
責(zé)任編輯:金賀 來源: ITEYE博客
相關(guān)推薦

2021-08-03 09:59:43

HTTPSTCP網(wǎng)絡(luò)協(xié)議

2019-01-29 11:08:48

NginxApacheHTTP協(xié)議

2021-03-11 08:50:58

Spring容器接口

2011-02-02 00:54:45

2017-07-14 09:57:47

共享經(jīng)濟(jì)物聯(lián)網(wǎng)大數(shù)據(jù)

2019-04-26 13:55:02

Istio微服務(wù)架構(gòu)

2022-03-14 09:39:06

PythonPDF圖片

2022-02-21 22:58:25

排序rowid 排序優(yōu)化

2023-09-28 08:21:20

i++++i高并發(fā)

2021-03-11 07:27:17

CPU空閑代碼

2020-10-16 09:18:29

Nginx

2020-09-29 10:20:02

Java編程語言

2022-12-08 09:10:11

I/O模型Java

2018-10-11 09:00:09

2015-04-02 09:44:56

云計(jì)算成本評(píng)估

2021-11-24 07:56:56

For i++ ++i

2018-11-06 21:30:44

jQuery前端API

2017-08-24 13:10:09

IT

2010-04-07 13:30:41

IO虛擬化

2013-08-26 09:15:38

百度輕應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)