过时的7种编码风格

开发 前端
如果你已经做了十多年的程序员,你可能会有一些你坚信的喜欢的风格,并站在你的论点上捍卫它们,直到最后。下面是一些我曾经坚定地坚持过的,但现在我想我必须放手了。

如果你已经做了十多年的程序员,你可能会有一些你坚信的喜欢的风格,并站在你的论点上捍卫它们,直到最后。

下面是一些我曾经坚定地坚持过的,但现在我想我必须放手了。

[[340160]]

1. 使用m或this表示成员变量

规则:要区分成员变量和局部变量,请使用以下任一方法

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

过时的原因

原因是当我们阅读代码时,可以很容易地知道它们是成员变量还是局部变量,而无需查看它们的声明。

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

现在

如果是现代IDE,则不再需要这种基于文本的区分,参见下面的相同代码,它将自动为它们涂上不同的颜色。

过时的7种编码风格

2. 始终明确声明public,protected或private

规则:一个类中的所有变量和函数都必须明确声明为public,private 或 protected。不要采用默认状态。

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

过时的原因

这是为了避免有人错误地访问这些函数或变量,即,如果未声明函数,则用户可能不知道默认状态(如果是公共状态或私有状态)。

现在

在现代IDE中,我们不需要显式地声明默认值,例如Kotlin是 public。用户不会无意中误认为默认状态,因为自动完成只会显示public 方法。因此,不太可能有人会混淆默认状态。

过时的7种编码风格

如果有任何错误的用法(例如访问私有函数),它不会在编译时才出错。它会立即出错,并给出明确的信息。

3. 始终明确声明变量类型

规则:所有的变量都应该用其类型来声明,即使它的值很清楚,例如,需要明确地说明类型,如 String 或 Int。

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

过时的原因

这是为了避免有人错误地访问这些函数或变量,例如变量分配给错误的类型,并导致编译错误。

现在

如果使用现代编程语言,则在可推断且明确的情况下,无需显式声明变量的类型。这就是所谓的类型推理,在今天的许多现代语言中它都是可用的。

如果有任何错误的分配等,它不会在编译时才出错。它会立即出错,并有一个清晰的信息。

过时的7种编码风格

4. 成员变量应始终为私有

规则:所有成员变量都应该是私有的,通过getter和setter访问,适用于需要从外部设置或获取的成员变量。

  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;  }} 

过时的原因

如果我们将其公开以进行setting和getting,在setting或getting时我们需要执行一些操作,我们需要改变所有访问它的代码。

因此,如果我们限制使用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;  }} 

现在

在现代语言(例如Kotlin)中,我们可以在需要时轻松地将变量getter或setter插入变量,而无需显式地设置和获取两个不同的函数。

因此,我们可以按以下方式进行编码,而无需在类中添加附加的setter和getter函数。

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

当我们需要对setter或getter进行操作时,我们可以轻松地添加它们,而无需更改访问 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. 开始和结束大括号应对齐

规则:所有大括号应在同一列对齐,以便我们可以轻松找到它们,例如

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

过时的原因

原因是通过纵向观察,我们可以很容易地找到它们的对,从而知道函数的范围在哪里。

现在

使用新的IDE,只要代码看起来很整洁,我们就不再需要在同一列上对齐开始和结束大括号。

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

这是因为我们可以轻松折叠或扩展它们,如下所示。

过时的7种编码风格

6. 所有缩进都使用tab键

规则:对所有缩进使用tab,而不要使用空格

过时的原因

这减少了所需的键入次数,如下所示,当你使用空格时,你需要多次输入

过时的7种编码风格

现在

使用IDE,它将为我们自动缩进适当数量的空格。拥有空格还将确保所有代码在整个用户环境中看起来都一致。

过时的7种编码风格

7. 使用分号结束代码语句

规则:在结束代码语句时,必须使用分号。

过时的原因

这是必需的,因为从前的编程语言(包括C和C ++,Java等)使解析器识别它已经结束。

现在

使用新的现代语言(例如Kotlin),不再需要编写长语句(例如,我们可以将变量命名为更短,缩进的缩进形式)。

[[340161]]

最后

通过改变对上述7种编码样式的信念,我对代码进行了如下更改:

过时的7种编码风格

世界在不断变化,过去的要求可能不再适用。借助技术和工具,我们应该始终重新评估我们曾经拥有的规则,并继续前进。

感觉这么年轻。谢谢阅读!

 

责任编辑:赵宁宁 来源: 今日头条
相关推荐

2020-09-16 06:16:55

代码编码开发

2020-06-02 08:54:47

编程语言C语言程序员

2009-06-29 08:48:39

Linux编码

2017-03-23 14:30:13

Linux内核驱动编码风格

2015-07-20 10:00:28

Linux内核编码风格

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

开发人工智能代码

2015-03-10 10:29:26

微软Windows 7Azure云服务

2010-09-10 13:40:09

DIV背景

2021-06-17 12:50:04

LinuxLinux内核官方手册

2024-03-05 13:14:35

安全管理CISO

2023-12-01 07:24:40

软件架构

2010-04-01 11:32:33

Oracle repo

2011-04-29 09:14:19

jQueryjavascript

2017-01-15 14:59:40

微软Windows 7

2021-02-19 14:07:03

JavaScript编程开发

2024-11-12 12:52:39

Python代码函数

2017-11-13 12:01:31

开发者编程编程风格
点赞
收藏

51CTO技术栈公众号