精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

API設計過程中的通用準則和約定準則

C語言專家集中營 ? 2017-11-24 16:53 ? 次閱讀

API設計原則

一致、易于掌握和強大的API是Qt最著名的優點之一。此文總結了我們在設計Qt風格API的過程中所積累的訣竅(know-how)。其中許多是通用準則;而其他的則更偏向于約定,遵循這些約定主要是為了與已有的API保持一致。

雖然這些準則主要用于對外的API(public API),但在設計對內的API(private API)時也推薦遵循相同的技巧(techniques),作為開發者之間協作的禮儀(courtesy)。

如有興趣也可以讀一下Jasmin Blanchette的Little Manual of API Design (PDF)或是本文的前身Matthias Ettrich的Designing Qt-Style C++ APIs。

1. 好API的6個特質

API之于程序員就如同圖形界面之于普通用戶(end-user)。API中的『P』實際上指的是『程序員』(Programmer),而不是『程序』(Program),強調的是API是給程序員使用的這一事實。

在第13期Qt季刊,Matthias的關于API設計的文章中提出了觀點:API應該極簡(minimal)且完備(complete)、語義清晰簡單(have clear and simple semantics)、符合直覺(be intuitive)、易于記憶(be easy to memorize)和引導API使用者寫出可讀代碼(lead to readable code)。

1.1 極簡

極簡的API是指每個class的public成員盡可能少,public的class也盡可能少。這樣的API更易理解、記憶、調試和變更。

1.2 完備

完備的API是指期望有的功能都包含了。這點會和保持API極簡有些沖突。如果一個成員函數放在錯誤的類中,那么這個函數的潛在用戶就會找不到,這也是違反完備性的。

1.3 語義清晰簡單

就像其他的設計一樣,我們應該遵守最少意外原則(the principle of least surprise)。好的API應該可以讓常見的事完成的更簡單,并有可以完成不常見的事的可能性,但是卻不會關注于那些不常見的事。解決的是具體問題;當沒有需求時不要過度通用化解決方案。(舉個例子,在Qt 3中,QMimeSourceFactory不應命名成QImageLoader并有不一樣的API。)

1.4 符合直覺

就像計算機里的其他事物一樣,API應該符合直覺。對于什么是符合直覺的什么不符合,不同經驗和背景的人會有不同的看法。API符合直覺的測試方法:經驗不很豐富的用戶不用閱讀API文檔就能搞懂API,而且程序員不用了解API就能看明白使用API的代碼。

1.5 易于記憶

為使API易于記憶,API的命名約定應該具有一致性和精確性。使用易于識別的模式和概念,并且避免用縮寫。

1.6 引導API使用者寫出可讀代碼

代碼只寫一次,卻要多次的閱讀(還有調試和修改)。寫出可讀性好的代碼有時候要花費更多的時間,但對于產品的整個生命周期來說是節省了時間的。

最后,要記住的是,不同的用戶會使用API的不同部分。盡管簡單使用單個Qt類的實例應該符合直覺,但如果是要繼承一個類,讓用戶事先看好文檔是個合理的要求。

2. 靜態多態

相似的類應該有相似的API。在繼承(inheritance)合適時可以用繼承達到這個效果,即運行時多態。然而多態也發生在設計階段。例如,如果你用QProgressBar替換QSlider,或是用QString替換QByteArray,你會發現API的相似性使的替換很容易。這即是所謂的『靜態多態』(static polymorphism)。

靜態多態也使記憶API和編程模式更加容易。因此,一組相關的類有相似的API有時候比每個類都有各自的一套API更好。

一般來說,在Qt中,如果沒有足夠的理由要使用繼承,我們更傾向于用靜態多態。這樣可以減少Qtpublic類的個數,也使剛學習Qt的用戶在翻看文檔時更有方向感。

2.1 好的案例

QDialogButtonBox與QMessageBox,在處理按鈕(addButton()、setStandardButtons()等等)上有相似的API,不需要繼承某個QAbstractButtonBox類。

2.2 差的案例

QTcpSocket與QUdpSocket都繼承了QAbstractSocket,這兩個類的交互行為的模式(mode of interaction)非常不同。似乎沒有什么人以通用和有意義的方式用過QAbstractSocket指針(或者能以通用和有意義的方式使用QAbstractSocket指針)。

2.3 值得斟酌的案例

QBoxLayout是QHBoxLayout與QVBoxLayout的父類。好處:可以在工具欄上使用QBoxLayout,調用setOrientation()使其變為水平/垂直。壞處:要多一個類,并且有可能導致用戶寫出這樣沒什么意義的代碼,((QBoxLayout *)hbox)->setOrientation(Qt::Vertical)。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • API
    API
    +關注

    關注

    2

    文章

    1485

    瀏覽量

    61817

原文標題:API設計原則

文章出處:【微信號:C_Expert,微信公眾號:C語言專家集中營】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    電子對抗系統的概率準則存在哪些缺陷?

      電子對抗系統的概率準則存在哪些缺陷?在電子對抗系統,概率準則是由電子干擾環境完成給定任務的概率決定,以評估電子對抗系統的抗干擾性能
    發表于 12-15 15:47

    FPGA設計指導準則

    FPGA設計指導準則
    發表于 05-14 17:02

    硬件開發的基本準則

    硬件開發的基本準則
    發表于 08-20 14:29

    FPGA設計指導準則

    FPGA設計指導準則
    發表于 06-08 23:21

    EICC 電子行業行為準則

    of Conduct ),旨在電子行業的全球供應鏈,建立標準化的社會責任感行為規范,以確保電子行業及信息通信技術產業供應鏈的工作環境安全、工人得到尊重,同時確保在制造過程履行必要的環保責任。該準則由一系列的基本規范
    發表于 08-05 17:39

    射頻電纜通用設計準則概述

      該文詳細討論了射頻電纜及測試電纜組件的各項指標和性能,為廣大測試工程人員在選用高性能高可靠性射頻測試電纜組件時所應關注的幾個方面提出了專業建議。  —射頻電纜的通用設計準則  射頻電纜組件的正確
    發表于 07-11 07:14

    DIP插件的準則有哪些

    `請問DIP插件的準則有哪些?`
    發表于 12-26 16:49

    PCB設計電路可靠性設計準則

    誰來闡述一下PCB設計電路可靠性設計準則
    發表于 01-10 15:55

    介紹一下設計過程通用的SI設計準則

    信號完整性(SI)問題是如何提出來的?解決SI問題有哪幾種方法?設計過程通用的SI設計準則有哪些?
    發表于 04-21 07:13

    Datapath綜合的編碼準則手冊

    Datapath綜合的編碼準則手冊 本文將綜述用于Datapath綜合的編碼準則。編碼準則可分為兩類:►有助于RTL代碼算式功能正確性和幫助達成預期行為的準則&#
    發表于 03-13 11:38 ?16次下載

    PCB布局的準則和操作技巧

    PCB布局的準則和操作技巧   摘要: PCB布局的準則操作技巧& 濾波電容、去耦電容、旁路電容作用& 在一個大的電容上還并
    發表于 11-18 09:19 ?2651次閱讀

    ALC_OFDM系統的ACMS新選擇準則_金勇

    ALC_OFDM系統的ACMS新選擇準則_金勇
    發表于 03-19 18:58 ?0次下載

    電子功率準則和信息準則介紹

    性能時,用效率準則進行評估比較優越。 在復雜電磁環境,高技術電子對抗戰將成為未來戰爭的主體。干擾效果(Jamming Effectiveness)評估是電子對抗作戰的核心問題,也是電子對抗技術研究、電子對抗設備開發的關鍵技術,對裝備作戰效能的客觀、準確地估計,以及改善其
    發表于 12-04 17:34 ?1192次閱讀

    歐盟發布的無人機有哪些通用準則

    近日,歐洲航空安全局發布了適用于整個歐盟范圍的無人機通用準則。該準則涵蓋了無人機技術和操作要求,
    的頭像 發表于 07-18 10:34 ?1883次閱讀

    buck電路環路穩定準則是什么 buck電路環路不穩會導致sw變頻嗎

    Buck電路環路穩定準則 Buck電路,作為一種常見的降壓轉換電路,其環路穩定性對于電路的正常運行至關重要。環路穩定準則主要涉及以下幾個方面: 1. 負反饋環路穩定性 負反饋是Buck電路實現穩定
    的頭像 發表于 10-06 17:23 ?379次閱讀