当前位置:首页 » 编程软件 » 破日编程吧

破日编程吧

发布时间: 2023-02-11 20:28:23

编程5分钟,命名2小时!大神程序员都在用这套命名方法

在 软件中随处可见命名:要给变量、函数、参数、类和封包命名,还要给源代码及源代码所在目录命名,甚至还有jar文件、war文件和ear文件命名。

但是,看似简单的命名,也是让不少程序员头疼的问题。 有一些小伙伴,在进行变量命名的时候,对于自己熟悉的英文,可能还会用英文命名一下,如果需要命名的部分不会用英文表达,或许就直接用拼音了。

有的童鞋一下想不起来怎么命名,直接用拼音直接用aa,bb等这样没有任何代表意义的字母来命名,可读性非常差,可能自己今天写的,一个星期后回来再看,也忘记其具体代表的含义了。

因此,许多人在写代码之前,总会在想啊想啊,用什么命名法好呢?对于经常在C++、Java、Python等主流语言上切换的强迫症来说,换个语言换种命名风格简直不要太混乱。


既然有这么多命名要做,不妨做好它。本期内容中,异步君为大家带来了起个好名字应遵从的几条简单规则,一起来看看吧

— 01 —

名副其实

名副其实说起来简单。我们想要强调,这事很严肃。选个好名字要花时间,但省下来的时间比花掉的多。注意命名,而且一旦发现有更好的名称,就换掉旧的。这么做,读你代码的人(包括你自己)都会更开心。


变量、函数或类的名称应该已经答复了所有的大问题。它该告诉你,它为什么会存在,它做什么事,应该怎么用。如果名称需要注释来补充,那就不算是名副其实。


名称d什么也没说明。它没有引起读者对时间消逝的感觉,更别说以日计了。我们应该选择指明了计量对象和计量单位的名称:


选择体现本意的名称能让人更容易理解和修改代码。下列代码的目的何在?


为什么难以说明上述代码要做什么事?里面并没有复杂的表达式,空格和缩进中规中矩,只用到三个变量和两个常量,甚至没有涉及任何其他类或多态方法,只是(或者看起来是)一个数组的列表而已。


问题不在于代码的简洁度,而在于代码的模糊度:即上下文在代码中未被明确体现的程度。上述代码要求我们了解类似以下问题的答案:

(1)theList中是什么类型的东西?

(2)theList零下标条目的意义是什么?

(3)值4的意义是什么?

(4)我怎么使用返回的列表?


问题的答案没体现在代码段中,可代码段就是它们该在的地方。比方说,我们在开发一种扫雷 游戏 ,我们发现,盘面是名为theList的单元格列表,那就将其名称改为gameBoard。


盘面上每个单元格都用一个简单数组表示。我们还发现,零下标条目是一种状态值,而该种状态值为4表示“已标记”。只要改为有意义的名称,代码就会得到相当程度的改进:


注意,代码的简洁性并未被触及。运算符和常量的数量全然保持不变,嵌套数量也全然保持不变,但代码变得明确多了。


还可以更进一步,不用int数组表示单元格,而是另写一个类。该类包括一个名副其实的函数(称为isFlagged),从而掩盖住那个魔术数[1]。于是得到函数的新版本:


只要简单改一下名称,就能轻易知道发生了什么。这就是选用好名称的力量。


— 02 —

避免误导


程序员必须避免留下掩藏代码本意的错误线索。应当避免使用与本意相悖的词,例如,hp、aix和sco都不该用作变量名,因为它们都是Unix平台或类Unix平台的专有名称。即便你是在编写三角计算程序,hp看起来是一个不错的缩写[2],但那也可能会提供错误信息。


别用accountList来指称一组账号,除非它真的是List类型。List一词对程序员有特殊意义。如果包纳账号的容器并非真是一个List,就会引起错误的判断。


所以,用accountGroup或bunchOfAccounts,甚至直接用accounts都会好一些。


提防使用外形相似度较高的名称。例如,想区分模块中某处的XYZControllerFor-EfficientHandlingOfStrings和另一处的-OfStrings,会花多长时间呢?这两个词的外形实在太相似了。


以同样的方式拼写出同样的概念才是信息。拼写前后不一致就是误导。我们很享受现代Java编程环境的自动代码完成特性。键入某个名称的前几个字母,按一下某个热键组合(如果有的话),就能得到一列该名称的可能形式。


假如相似的名称依字母顺序放在一起,且差异很明显,那就会相当有助益,因为程序员多半会压根不看你的详细注释,甚至不看该类的方法列表就直接看名字挑一个对象。


误导性名称真正可怕的例子,是用小写字母l和大写字母O作为变量名,尤其是在组合使用的时候。当然,问题在于它们看起来完全像是常量“壹”和“零”。


读者可能会认为这纯属虚构,但我们确曾见过充斥这类名称的代码。有一次,代码作者建议用不同字体写变量名,好显得更清楚些,但前提是这种方案得要通过口头和书面传递给未来所有的开发者才行。后来,只是做了简单的重命名操作,就解决了问题,而且也没引起别的问题。

— 03 —

做有意义的区分

如果程序员只是为满足编译器或解释器的需要而写代码,就会制造麻烦。例如,因为同一作用范围内两样不同的东西不能重名,你可能会随手改掉其中一个的名称,有时干脆以错误的拼写充数,结果就会出现在更正拼写错误后导致编译器出错的情况。


光是添加数字系列或是废话远远不够,即便这足以让编译器满意。如果名称必须相异,那么其意思也应该不同才对。


以数字系列命名(a1、a2…aN)是依义命名的对立面。这样的名称纯属误导——完全没有提供正确信息,没有提供导向作者意图的线索。试看:


如果参数名改为source和destination,这个函数就会像样许多。


废话是另一种没意义的区分。假设你有一个Proct类,如果还有一个名为ProctInfo或ProctData的类,那它们的名称虽然不同,意思却无区别。Info和Data就像a、an和the一样,是意义含混的废话。


注意,只要体现出有意义的区分,使用a和the这样的前缀就没错。例如,你可能把a用在域内变量,而把the用于函数参数[5]。但如果你已经有一个名为zork的变量,又想调用一个名为theZork的变量,麻烦就来了。


废话都是冗余。variable一词永远不应当出现在变量名中。table一词永远不应当出现在表名中。NameString会比Name好吗?难道Name会是一个浮点数?如果是这样,就违反了关于误导的规则。

设想有一个名为Customer的类,还有一个名为CustomerObject的类,它们的区别何在呢?哪一个是表示客户 历史 支付情况的最佳方式?


有一个应用反映了这种状况。为当事者讳,我们改了一下,不过犯错的代码的确就是这个样子:


程序员怎么知道该调用哪个函数呢?


如果缺少明确约定,那么变量moneyAmount与money就没区别,customerInfo与customer没区别,accountData与account没区别,theMessage也与message没区别。要区分名称,就要以读者能鉴别不同之处的方式来区分。

— 04 —

使用读得出来的名称

人类长于记忆和使用单词。大脑的相当一部分就是用来容纳和处理单词的。单词能读得出来。人类的大脑中有那么大的一块地方用来处理言语,若不善加利用,实在是种耻辱。


如果名称读不出来,讨论的时候就会像个傻鸟。“哎,这儿,鼻涕阿三喜摁踢(bee cee arr three cee enn tee)[6]上头,有个皮挨死极翘(pee ess zee kyew)[7]整数,看见没?”这不是小事,因为编程本就是一种 社会 活动。


有一家公司,程序里面写了一个genymdhms(生成日期,年、月、日、时、分、秒),他们一般读作“gen why emm dee aich emm ess”[8]。我有见字照拼读的恶习,于是开口就念“gen-yah-mudda-hims”。


后来好些设计师和分析师都有样学样,听起来傻乎乎的。我们知道典故,所以会觉得很 搞笑 。 搞笑 归 搞笑 ,实际是在强忍糟糕的命名。在给新开发者解释变量名的意义时,他们总是读出傻乎乎的自造词,而非恰当的英语词。比较


现在读起来就像人话了:“喂,Mikey,看看这条记录!生成时间戳(generation timestamp)[9]被设置为明天了!不能这样吧?”

— 05 —

使用可搜索的名称

对于单字母名称和数字常量,有一个问题,就是很难在一大篇文字中找出来。


找MAX_CLASSES_PER_STUDENT很容易,但想找数字7就麻烦了,它可能是某些文件名或其他常量定义的一部分,出现在因不同意图而采用的各种表达式中。如果该常量是个长数字,又被人错改过,就会逃过搜索,从而造成错误。


同样,e也不是一个便于搜索的好变量名,它是英文中最常用的字母,在每个程序、每段代码中都有可能出现。由此而见,长名称胜于短名称,搜得到的名称胜于用自造编码代写就的名称。


窃以为单字母名称仅用于短方法中的本地变量。名称长短应与其作用域大小相对应 [N5]。若变量或常量可能在代码中多处使用,则应赋予其便于搜索的名称。再比较:


注意,上面代码中的sum并非特别有用的名称,不过至少搜得到它。采用能表达意图的名称,貌似拉长了函数代码,但要想想看,WORK_DAYS_PER_WEEK比数字5好找得多,而列表中也只剩下了体现作者意图的名称。

— 06 —

避免使用编码

编码已经太多,无谓再自找麻烦。把类型或作用域编进名称里面,徒然增加了解码的负担。没理由要求每位新人都在弄清要应付的代码之外(那算是正常的),还要再搞懂另一种编码“语言”。这对解决问题而言,纯属多余的负担。带编码的名称通常也不便发音,容易打错。


匈牙利语标记法


在往昔名称长短很重要的时代,我们毫无必要地破坏了不编码的规矩,如今后悔不迭。Fortran语言要求首字母体现出类型,导致了编码的产生。BASIC语言的早期版本只允许使用一个字母再加上一位数字。匈牙利语标记法[10](Hungarian Notation,HN)将这种态势愈演愈烈。


在Windows的C语言API的时代,HN相当重要,那时所有名称要么是一个整数句柄,要么是一个长指针或者void指针,要不然就是string的几种实现(有不同的用途和属性)之一。那时候编译器并不做类型检查,程序员需要匈牙利语标记法来帮助自己记住类型。


现代编程语言具有更丰富的类型系统,编译器也记得并强制使用类型。而且,程序员趋向于使用更小的类、更短的方法,好让每个变量的定义都在视野范围之内。


Java程序员不需要类型编码,因为对象是强类型的,代码编辑环境已经先进到在编译开始前就能监测到类型错误的程度!所以,如今HN和其他的类型编码形式都纯属多余。它们增加了修改变量、函数或类的名称或类型的难度,它们增加了阅读代码的难度,它们制造了让编码系统误导读者的可能性。


成员前缀


也不必用m_前缀来标明成员变量。应当把类和函数做得足够小,以消除对成员前缀的需要。你应当使用某种可以高亮或用颜色标出成员的编辑环境。


此外,人们会很快学会无视前缀(或后缀),而只看到名称中有意义的部分。代码读得越多,眼中就越没有前缀。最终,前缀变作了不入法眼的废料,变作了旧代码的标志物。


接口和实现


有时也会出现采用编码的特殊情形。比如,你在做一个创建形状用的抽象工厂(Abstract Factory),该工厂是一个接口,要用具体类来实现。你怎么来命名工厂和具体类呢?IShapeFactory和ShapeFactory吗?我喜欢不加修饰的接口。前导字母I被滥用到了说好听点儿是干扰,说难听点儿根本就是废话的程度。


我不想让用户知道我给他们的是接口,而就想让他们知道那是一个ShapeFactory。如果在接口和实现中必须选其一来编码的话,我宁肯选择实现。ShapeFactoryImp,甚至是丑陋的CShapeFactory,都比对接口名称编码好。


-END-


代码整洁之道

作者: [美] 罗伯特·C. 马丁(Robert C. Martin)

译者: 韩磊


内容简介:

软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。


本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码操作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。


本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。

Ⅱ 有没有那种不费脑子又不侮辱观众智商的甜甜偶像剧推荐

1、《同学两亿岁》;尽管有诸多的槽点让人无法看下来。可是有的情况下坚持不懈一下便会见到让人开心的物品。每一个人物角色都平凡而不平庸十分独特,小女孩的演得确实蛮非常好的啊!有点像徐静蕾,不愧是她挑的明星。值得一看。



2、《来到你的世界》;很有创意的漫穿,以前日本国演过一个,尽管有长濑智也哪个逗b出演可是哪个戏很丧,这一戏就好玩儿多了!越到后边越漂亮。男人女人主人公还是很有cp感的,副线cp也很萌。主创人员良知线上,知名演员演得线上,漂亮的当地青春偶像剧。

3、《来自海洋的你》;来源于深海的你=来源于星星的你+深蓝色大海的传说相比唯美爱情小故事,这一部剧更好像童话故事改写的小美人鱼公主奇遇记再再加生物技术,没谁了!不用调侃哪些演得,我认为大家应当把重中之重放到导演上,故事情节紧凑型,持续性和惊悚感最高分。



4、《我的女友要上天》;《我的女友要上天》剧与其名,有点丧心病狂,有点小烂漫,有点嬉皮笑脸,晃晃荡荡,可是确实轻轻松松又漂亮。从第一集刚开始我也一直在看见九九怎样达到目标,扑到纯阳男傲娇进行自身的得道成仙伟业。消磨时光能够 一看。



5、《亲爱的活祖宗》;好甜的剧,全程姨母笑,男主角太奶狗了。大家都无需去看看哪些韩剧啦,国内奶狗比日本单眼皮小眼睛男帅多了!全是新手,可演得居然都那么好,一点不尬,由此可见没有总流量的剧才有可能是热剧!



6、《独家记忆》;尽管甜是这一部剧的宣传策划,可是台本身甜得很当然真正,没有有意以便甜而甜。并且,这应该是最贴近真正学校生活的青春校园剧了,男人女人主人公的选人取得成功,演译极致,故事情节也是一层一层进行的,随处有悬念,时刻有埋下伏笔。值得一看。



7、《最亲爱的你》;听说是重拍的韩国电视剧,但是没看了正版的我认为还不错耶。很真正的青春爱情故事,五个性情各不相同的女生,每一个人都是有自身的密秘,都是有分别的优点和缺点,在成长阶段中越来越更为出色,友情更为浓厚,也获得了归属于自身的感情。我感觉这剧比近期的许多上星剧都漂亮,大约是由于能从剧里的角色的身上恍惚间见到自身的影子吧。



8、《众王驾到》;这一部剧十分合适爱想象,爱想象的女孩子,玛丽苏另加解除神密故事情节,乐雪永生不死的缘故,三个古时候的王和女主角究竟有什么联络,小寒一直要守卫洛夕的缘故等。惊悚的一部分还是很有趣。强烈推荐。

9、《炮灰攻略》;IP剧,花样穿越重生,主题很新奇,情况道具备认真,情节表情图融合二三次元特点,很赞,但知名演员长相太过路人,俩位男主角演得充分发挥还不平稳。总而言之,还是靠台本自身。



10、《奈何boss要娶我》;由于这一部剧的资产层面无法跟上,因此许多 地区也没有拍。但是我认为知名演员们的演得已经很棒了。我还记得男主角和女主角全是学跳舞。并且以前别的的那类当代高甜剧她们的配声都无法跟上。大伙儿能够 看一下陈益韬的新浪微博,确实有很多苦处,一开始没有人适用不红,资产层面确实挺不易的,我很希望第二部,我认为知名演员们全是磨练中渐渐地越来越更强的,男主女主全是舞蹈的仿佛,我认为演得确实挺好了。

Ⅲ 有必要让孩子学习少儿编程吗

链接:

提取码:h21j

少儿编程教学可以大致分为两类:一类是Scratch或是仿Scratch的图形化编程教学,以培养兴趣、锻炼思维为主,趣味性较强。在这里,可以创造属于自己的动画,故事,音乐和游戏,这个过程其实就像搭积木一样简单。此外,还有机器人编程,也就是搭建机器人,通过运行程序让它动起来,着重培养孩子的动手能力。另一类是基于Python、C++等高级编程语言的计算机编程教学,目标往往是参加信息学奥赛等科技品牌赛事,如信息学奥林匹克竞赛/联赛、机器人竞赛、科技创新大赛等,或为后续的专业学习和职业技能打下基础。

Ⅳ 我要制作一个软件,但我不会编程,我想请人做,应该在网上哪里找。

制作一个软件,但我不会编程,我想请人做,应该在网上哪里找

简单点来说,要视手机APP的需求及质量而言,价位一般在几千到十几万左右,更高端的价格更高。

四、APP开发公司的所在地

需要注意的是,同样实力的APP开发公司,在不同的城市也会导致APP的成本费用高一些

Ⅳ 自学编程可以吗,难度大不大啊

要说编程难不难,这给你总结下编程的难点吧:
1、初学者。编程是用计算机语言和计算机交流,你输入什么,你期望计算机理解之后,输出你需要的结果。所以这个过程可以概括为“输入–计算–输出”。学习一门计算机语言,说难不难,说易也不太容易,为什么呢?如果你是编程的初学者,你要上手一门语言,是非常困难的(天才除外);但如果你是精通一两门语言,再去学其他语言,可以说一个星期就能熟悉。所以,对大部分初学者来说,编程语言是难点。
2、编程思想。程序员一定要有编程思想。跳过初学者这一关,假设你可以对任何语言顺手拈来、即插即用,那么,你水平就一定很高了吗?其实不然,这只能说明你学习能力上一层楼了,但并不说明你就多么厉害。比如,你熟悉设计模式吗?设计系统的时候有没考虑扩展性?是否考虑到性能问题……如果整天只做crud,不去关注以上问题的话,瓶颈是很难突破的。那么编程思想何来?就要平时多阅读这类的书籍和文章,比如设计模式,比如高并发系统设计相关知识等。除此以外,还要多思考,为什么这样设计,所谓学而不思则罔,思而不学则殆!
3、沟通能力。好了,即使你掌握多种语言,又可以把系统设计要得很溜了,但是如果你是个不会说话的哑巴,你就无法表达出自己的思想,无法向老板展现你的才能,那么你的职业生涯会受到很多限制。我自认为本人的沟通能力是弱项,自己也在不断努力改善这点。现在每次参加讨论的时候都会积极发言,表达自己的观点,除此之外还报了一些口才课,来提升自己的表达能力。
当然,每个人的逻辑思维能力不同,兴趣点不同,总有一部分人觉得容易,一部分人觉得吃力。但只要你想学,肯定能学会。
学习编程是一个漫长而痛苦的过程,需要持之以恒的耐心,千自万不能急于求成。对于一名初学者来说,最重要的还是打好基础。说实话入门不难,但是想做精就比较困难了。

Ⅵ 少儿编程学校哪家好

少儿编程学校哪家好,需要一个综合考虑的过程,要看各方面的因素,并不一定大品牌、价格高的就是好的,而是清楚学习的目的,选择一个适合孩子的。

最好是给孩子找专业毕业的老师,编程逻辑和习惯比较标准,还要注意的就是编程老师的教学方式和教学经验怎么样。其次,就是上课的模式,有一对一和一对二的教学模式,最好是带孩子试听之后再决定。要考虑到孩子的学习热情和学习效率,课前课后,是否安排相应的助教老师辅导孩子的学习。

少儿编程学校哪家好,家长选择报名之前,最好的方式自然是去体验课堂的氛围和教学的方式,这样才能选择出最适合孩子的机构,学习的效率也会更高。

面对众多的少儿编程培训机构,想要给孩子找到一家优质的平台,不是一件很容易的事情,可以参考以下几点:

少儿编程学校哪家好?少儿编程学什么?由哪些方面进行判断?

师资方面。不管是成人还是孩子,编程培训平台的师资水平很重要,尤其是对小孩子来说,学习态度、学习习惯的养成都和编程老师有关,所以老师优质与否很关键。

看编程培训机构的口碑。一家编程培训平台的口碑都是家长评价长期积累起来的,在一定程度上意味着综合实力、教学经验等,口碑比知名度更靠谱。

班级人数。班级人数多少是和孩子的学习性格、学习效果有关的,如果孩子性格腼腆,人数众多的大班制是不合适的,当然,人数越少,学习效果越好,这是众所周知的。

Ⅶ 我们在学习编程语言的时候比如C语言Java语言这些编辑器EditPlus、UltraEdit、sublime哪个更好一些

选Visual Studio Code(VSCode)。
EditPlus UltraEdit SublimeText都是收费软件,需要破解。C/C++ Vi & VIM 足以,其他我都觉得挺弱的,VIM实在是太强大了。
其他我习惯UE,涉及字符集时候非常有用。
如果代码量非常大的话,推荐sourceinsight.

EP我觉得和UE没多大区别,看个人喜好了。sublime不了解追问sublime这款编辑器08年新出来在程序员界非常火,而且也是现在最为流行的编辑器,无论是酷炫的界面还是强大的编辑功能,而且sublime最棒的就是很多强大的可以自由组装的插件,那些插件用好了基本上也就相当于一个IDE了,不单单能编写代码还能在里面编译运行程序,反正这些年来最流行的编辑器追答额。。。好吧,我落伍了。 vi对于我来说够用了。谢谢科普追问sublime什么都好就是对中文支持比较差尤其是编码问题特别头疼,sublime我已经把它卸载了,我现在电脑上除了IDE之外就用notepad++真心不错,开源免费麻雀虽小五脏俱全,真心不错

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:749
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:718
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:878
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1127
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:351
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:911
python股票数据获取 发布:2025-10-20 07:39:44 浏览:875