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

過時(shí)的7種編碼風(fēng)格

開發(fā) 前端
如果你已經(jīng)做了十多年的程序員,你可能會(huì)有一些你堅(jiān)信的喜歡的風(fēng)格,并站在你的論點(diǎn)上捍衛(wèi)它們,直到最后。下面是一些我曾經(jīng)堅(jiān)定地堅(jiān)持過的,但現(xiàn)在我想我必須放手了。

如果你已經(jīng)做了十多年的程序員,你可能會(huì)有一些你堅(jiān)信的喜歡的風(fēng)格,并站在你的論點(diǎn)上捍衛(wèi)它們,直到最后。

下面是一些我曾經(jīng)堅(jiān)定地堅(jiān)持過的,但現(xiàn)在我想我必須放手了。

[[340160]]

1. 使用m或this表示成員變量

規(guī)則:要區(qū)分成員變量和局部變量,請使用以下任一方法

  • 使用匈牙利表示法,即 mMemberVariable 與 localVariable。其中 m 代表成員變量。
  • this 的使用,即 this.memberVariable 與 localVariable。

過時(shí)的原因

原因是當(dāng)我們閱讀代碼時(shí),可以很容易地知道它們是成員變量還是局部變量,而無需查看它們的聲明。

  1. class MyClass { 
  2.   var mMember = "member" 
  3.   fun doSomething() { 
  4.     val local = "local" 
  5.     println(this.mMember) 
  6.     println(local)  }} 

現(xiàn)在

如果是現(xiàn)代IDE,則不再需要這種基于文本的區(qū)分,參見下面的相同代碼,它將自動(dòng)為它們涂上不同的顏色。

過時(shí)的7種編碼風(fēng)格

2. 始終明確聲明public,protected或private

規(guī)則:一個(gè)類中的所有變量和函數(shù)都必須明確聲明為public,private 或 protected。不要采用默認(rèn)狀態(tài)。

  • 需要明確說明類型,例如 String 或 Int
  • 需要明確說明它是 private 還是 public
  1. public class MyClass { 
  2.   public val publicVariable: String = "100" 
  3.     private fun privateFunction() {} 
  4.     public fun publicFunction() {} 

過時(shí)的原因

這是為了避免有人錯(cuò)誤地訪問這些函數(shù)或變量,即,如果未聲明函數(shù),則用戶可能不知道默認(rèn)狀態(tài)(如果是公共狀態(tài)或私有狀態(tài))。

現(xiàn)在

在現(xiàn)代IDE中,我們不需要顯式地聲明默認(rèn)值,例如Kotlin是 public。用戶不會(huì)無意中誤認(rèn)為默認(rèn)狀態(tài),因?yàn)樽詣?dòng)完成只會(huì)顯示public 方法。因此,不太可能有人會(huì)混淆默認(rèn)狀態(tài)。

過時(shí)的7種編碼風(fēng)格

如果有任何錯(cuò)誤的用法(例如訪問私有函數(shù)),它不會(huì)在編譯時(shí)才出錯(cuò)。它會(huì)立即出錯(cuò),并給出明確的信息。

3. 始終明確聲明變量類型

規(guī)則:所有的變量都應(yīng)該用其類型來聲明,即使它的值很清楚,例如,需要明確地說明類型,如 String 或 Int。

  1. public class MyClass { 
  2.   public val publicVariable: String = "100" 
  3.   private fun privateFunction() {} 
  4.   public fun publicFunction() {} 

過時(shí)的原因

這是為了避免有人錯(cuò)誤地訪問這些函數(shù)或變量,例如變量分配給錯(cuò)誤的類型,并導(dǎo)致編譯錯(cuò)誤。

現(xiàn)在

如果使用現(xiàn)代編程語言,則在可推斷且明確的情況下,無需顯式聲明變量的類型。這就是所謂的類型推理,在今天的許多現(xiàn)代語言中它都是可用的。

如果有任何錯(cuò)誤的分配等,它不會(huì)在編譯時(shí)才出錯(cuò)。它會(huì)立即出錯(cuò),并有一個(gè)清晰的信息。

過時(shí)的7種編碼風(fēng)格

4. 成員變量應(yīng)始終為私有

規(guī)則:所有成員變量都應(yīng)該是私有的,通過getter和setter訪問,適用于需要從外部設(shè)置或獲取的成員變量。

  1. public class MyClass{ 
  2.   private var member = "member"
  3.   public fun getMember(): String { 
  4.     return member; 
  5.   }  public fun setMember(value: String) { 
  6.     member = value;  }} 

過時(shí)的原因

如果我們將其公開以進(jìn)行setting和getting,在setting或getting時(shí)我們需要執(zhí)行一些操作,我們需要改變所有訪問它的代碼。

因此,如果我們限制使用getter和setter,則可以控制它。

  1. class MyClass{ 
  2.   private var member = "member"
  3.   fun getMember(): String { 
  4.     println("Setting member") 
  5.     return member; 
  6.   }  fun setMember(value: String) { 
  7.     println("Setting member with $value") 
  8.     member = value;  }} 

現(xiàn)在

在現(xiàn)代語言(例如Kotlin)中,我們可以在需要時(shí)輕松地將變量getter或setter插入變量,而無需顯式地設(shè)置和獲取兩個(gè)不同的函數(shù)。

因此,我們可以按以下方式進(jìn)行編碼,而無需在類中添加附加的setter和getter函數(shù)。

  1. class MyClass { 
  2.   var member = "member" 

當(dāng)我們需要對setter或getter進(jìn)行操作時(shí),我們可以輕松地添加它們,而無需更改訪問 member 的代碼。

  1. class MyClass { 
  2.   var member = "member" 
  3.   get(): String { 
  4.     println("Setting member") 
  5.     return field 
  6.   }  set(value: String) { 
  7.     println("Setting member with $value") 
  8.     field = value 
  9.   }} 

5. 開始和結(jié)束大括號應(yīng)對齊

規(guī)則:所有大括號應(yīng)在同一列對齊,以便我們可以輕松找到它們,例如

  1. class MyClass  
  2. {  private var member: String = "member" 
  3.   fun doSomething(state: Boolean) 
  4.   {    val local = "local" 
  5.     println(member)    println(local)  }} 

過時(shí)的原因

原因是通過縱向觀察,我們可以很容易地找到它們的對,從而知道函數(shù)的范圍在哪里。

現(xiàn)在

使用新的IDE,只要代碼看起來很整潔,我們就不再需要在同一列上對齊開始和結(jié)束大括號。

  1. class MyClass { 
  2.   private var member: String = "member" 
  3.   fun doSomething(state: Boolean) { 
  4.     val local = "local" 
  5.     println(member)    println(local)  }} 

這是因?yàn)槲覀兛梢暂p松折疊或擴(kuò)展它們,如下所示。

過時(shí)的7種編碼風(fēng)格

6. 所有縮進(jìn)都使用tab鍵

規(guī)則:對所有縮進(jìn)使用tab,而不要使用空格

過時(shí)的原因

這減少了所需的鍵入次數(shù),如下所示,當(dāng)你使用空格時(shí),你需要多次輸入

過時(shí)的7種編碼風(fēng)格

現(xiàn)在

使用IDE,它將為我們自動(dòng)縮進(jìn)適當(dāng)數(shù)量的空格。擁有空格還將確保所有代碼在整個(gè)用戶環(huán)境中看起來都一致。

過時(shí)的7種編碼風(fēng)格

7. 使用分號結(jié)束代碼語句

規(guī)則:在結(jié)束代碼語句時(shí),必須使用分號。

過時(shí)的原因

這是必需的,因?yàn)閺那暗木幊陶Z言(包括C和C ++,Java等)使解析器識別它已經(jīng)結(jié)束。

現(xiàn)在

使用新的現(xiàn)代語言(例如Kotlin),不再需要編寫長語句(例如,我們可以將變量命名為更短,縮進(jìn)的縮進(jìn)形式)。

[[340161]]

最后

通過改變對上述7種編碼樣式的信念,我對代碼進(jìn)行了如下更改:

過時(shí)的7種編碼風(fēng)格

世界在不斷變化,過去的要求可能不再適用。借助技術(shù)和工具,我們應(yīng)該始終重新評估我們曾經(jīng)擁有的規(guī)則,并繼續(xù)前進(jìn)。

感覺這么年輕。謝謝閱讀!

 

責(zé)任編輯:趙寧寧 來源: 今日頭條
相關(guān)推薦

2020-09-16 06:16:55

代碼編碼開發(fā)

2020-06-02 08:54:47

編程語言C語言程序員

2009-06-29 08:48:39

Linux編碼

2015-07-20 10:00:28

Linux內(nèi)核編碼風(fēng)格

2017-03-23 14:30:13

Linux內(nèi)核驅(qū)動(dòng)編碼風(fēng)格

2024-10-08 05:00:00

PEP 8編碼Python

2024-09-29 15:15:46

2023-09-06 11:35:11

2024-04-02 15:04:44

開發(fā)人工智能代碼

2025-04-22 03:00:00

2025-04-24 08:50:00

軟件架構(gòu)架構(gòu)軟件系統(tǒng)

2010-09-10 13:40:09

DIV背景

2015-03-10 10:29:26

微軟Windows 7Azure云服務(wù)

2021-06-17 12:50:04

LinuxLinux內(nèi)核官方手冊

2017-01-15 14:59:40

微軟Windows 7

2023-12-01 07:24:40

軟件架構(gòu)

2024-03-05 13:14:35

安全管理CISO

2025-04-17 07:10:03

API架構(gòu)項(xiàng)目

2010-04-01 11:32:33

Oracle repo

2011-04-29 09:14:19

jQueryjavascript
點(diǎn)贊
收藏

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