成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

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

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

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

所以你的代碼…

 

  1. public interface ISomeBehavior { } 

..應該寫成..

 

  1. public interface SomeBehavior { } 

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

 

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

 

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

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

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

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

 

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

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

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

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

 

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

你會發現這和傳統的“I”/“Impl”用法相反。但這很酷不是?每個“I”都代表我,但這該死的“Impl”里不是。

【編輯推薦】

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

2025-05-08 09:10:00

2021-08-03 09:59:43

HTTPSTCP網絡協議

2019-01-29 11:08:48

NginxApacheHTTP協議

2021-03-11 08:50:58

Spring容器接口

2011-02-02 00:54:45

2017-07-14 09:57:47

共享經濟物聯網大數據

2019-04-26 13:55:02

Istio微服務架構

2022-03-14 09:39:06

PythonPDF圖片

2022-12-08 09:10:11

I/O模型Java

2023-09-28 08:21:20

i++++i高并發

2022-02-21 22:58:25

排序rowid 排序優化

2021-03-11 07:27:17

CPU空閑代碼

2020-10-16 09:18:29

Nginx

2020-09-29 10:20:02

Java編程語言

2021-11-24 07:56:56

For i++ ++i

2015-04-02 09:44:56

云計算成本評估

2018-10-11 09:00:09

2009-02-18 10:08:46

Core i7Intel固態盤SSD

2011-10-17 10:01:18

IBMPower服務器

2010-04-07 13:30:41

IO虛擬化
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美在线观看 | 黄色大片网 | 国产探花 | 九九成人| www4虎 | 国产麻豆一区二区三区 | 狠狠av | 欧美一级免费看 | 羞羞免费网站 | 欧美日一区二区 | 中文字幕第二区 | 国产高清一区二区三区 | 国产精品国产三级国产播12软件 | 成人精品鲁一区一区二区 | 韩国毛片一区二区三区 | 欧美一区二区大片 | av中文字幕在线观看 | 国产视频观看 | 99视频免费看 | 成人国产午夜在线观看 | 色天堂视频| 亚洲精品无 | 久久精品一区二区三区四区 | 精品在线一区二区三区 | 久久av一区 | 亚洲+变态+欧美+另类+精品 | 国产二区视频 | 日本激情一区二区 | 在线电影日韩 | 伊人久久在线 | 日韩中文字幕免费在线 | 国产第二页 | 久久99久久99精品免视看婷婷 | 99精品亚洲国产精品久久不卡 | 99久久婷婷国产综合精品电影 | 亚洲在线一区二区 | 国产999精品久久久久久 | 日韩欧美综合在线视频 | 一区二区三区免费观看 | 韩国av一区二区 | 国产二区在线播放 |