当前位置: 首页 > 科技观察

7种过时的编码风格

时间:2023-03-16 18:32:20 科技观察

如果你已经做了十多年的程序员,你可能有一些你坚信的最喜欢的风格,并用你的论据捍卫它们直到最后。这里有一些我曾经坚持的,但现在我想我必须放手了。1、用m或this表示成员变量规则:要区分成员变量和局部变量,可以使用以下方法之一使用匈牙利表示法,mMemberVariablevs.localVariable。其中m表示成员变量。this的使用,即this.memberVariable和localVariable。之所以过时,是因为我们在阅读代码的时候,不用看它们的声明就很容易知道它们是成员变量还是局部变量。classMyClass{varmMember="member"fundoSomething(){vallocal="local"println(this.mMember)println(local)}}现在,如果是现代IDE,不再需要这种基于文本的区分,请参见下面的相同代码,它将自动给它们涂上不同的颜色。2.始终明确声明公共、保护或私有规则:类中的所有变量和函数都必须明确声明为公共、私有或保护。不采用默认状态。类型需要明确说明,比如String或者Int。需要明确说明是private还是publicpublicclassMyClass{publicvalpublicVariable:String="100"privatefunprivateFunction(){}publicfunpublicFunction(){}}这样做的原因是为了避免有人误访问这些函数或Variables,即如果该功能未声明,用户可能不知道默认状态(如果是公共的或私有的)。现在在现代IDE中我们不需要像Kotlin一样显式声明默认值是public的。用户不会无意中弄错默认状态,因为自动完成只会显示公共方法。因此,任何人都不太可能混淆默认状态。如果有任何错误的用法(比如访问私有函数),不仅会在编译时出错。它会立即出错并显示一条明确的消息。3.始终显式声明变量类型规则:所有变量都应该用它们的类型来声明,即使它的值是明确的,例如需要显式声明类型,例如String或Int。publicclassMyClass{publicvalpublicVariable:String="100"privatefunprivateFunction(){}publicfunpublicFunction(){}}isobsolete这是为了避免有人错误地访问这些函数或变量,例如变量被分配给错误的类型,导致编译错误。现在使用现代编程语言,当变量可以被推导并且没有歧义时,不需要显式声明变量的类型。这称为类型推断,如今在许多现代语言中都可用。如果有任何错误的赋值等,它不会只是在编译时出错。它会立即出错并显示一条明确的消息。4.成员变量应该始终是私有的规则:所有成员变量都应该是私有的,通过getters和setters来访问,适用于需要从外部设置或获取的成员变量。publicclassMyClass{privatevarmember="member";publicfungetMember():String{returnmember;}publicfunsetMember(value:String){member=value;}}如果我们将其公开用于设置和获取,则它已过时,当设置或获取时我们需要一些东西完成,我们需要更改访问它的所有代码。所以如果我们限制getters和setters的使用,我们是可以控制的。classMyClass{privatevarmember="member";fungetMember():String{println("Settingmember")returnmember;}funsetMember(value:String){println("Settingmemberwith$value")member=value;}}现在适用于现代语言例如Kotlin),我们可以在需要时轻松地将变量getter或setter插入变量,而无需显式设置和获取两个不同的函数。因此,我们可以编写如下代码,而无需在类中添加额外的setter和getter函数。classMyClass{varmember="member"}当我们需要对setter或getter进行操作时,我们可以轻松添加它们,而无需更改访问成员的代码。classMyClass{varmember="member"get():String{println("Settingmember")returnfield}set(value:String){println("Settingmemberwith$value")field=value}}5.左右大括号应该是对齐规则:所有大括号都应该在同一列中对齐,这样我们就可以很容易地找到它们,例如classMyClass{privatevarmember:String="member"fundoSomething(state:Boolean){vallocal="local"println(member)println(local)}}过时的原因是通过垂直观察,我们可以很容易地找到它们的对,从而知道函数的作用域在哪里。现在有了新的IDE,只要代码看起来整洁,我们就不再需要在同一列上对齐左大括号和右大括号。classMyClass{privatevarmember:String="member"fundoSomething(state:Boolean){vallocal="local"println(member)println(local)}}这是因为我们可以轻松折叠或展开它们,如下所示。6.Usetabkeyruleforallindentation:Usetabforallindentation,notspaces过时的原因这减少了所需的键入量,如下所示,当你使用空格时,你需要多次键入现在使用IDE,它会自动为我们缩进适当数量的空格。留有空格还可以确保所有代码在用户环境中看起来一致。7.使用分号结束代码语句规则:结束代码语句时,必须使用分号。过时的原因这是必需的,因为旧的编程语言(包括C和C++、Java等)让解析器认识到它已经结束了。现在有了Kotlin等新的现代语言,不再需要编写长语句(例如,我们可以用更短的、缩进的缩进形式来命名变量)。最后,通过改变我对上述7种编码风格的信念,我对代码做了以下修改:世界在不断变化,过去的要求可能不再适用。借助技术和工具,我们应该始终重新评估我们曾经拥有的规则并继续前进。感觉很年轻。谢谢阅读!