在 软件中随处可见命名:要给变量、函数、参数、类和封包命名,还要给源代码及源代码所在目录命名,甚至还有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和另一处的XYZControllerForEfficientStorage-OfStrings,会花多长时间呢?这两个词的外形实在太相似了。
以同样的方式拼写出同样的概念才是信息。拼写前后不一致就是误导。我们很享受现代Java编程环境的自动代码完成特性。键入某个名称的前几个字母,按一下某个热键组合(如果有的话),就能得到一列该名称的可能形式。
假如相似的名称依字母顺序放在一起,且差异很明显,那就会相当有助益,因为程序员多半会压根不看你的详细注释,甚至不看该类的方法列表就直接看名字挑一个对象。
误导性名称真正可怕的例子,是用小写字母l和大写字母O作为变量名,尤其是在组合使用的时候。当然,问题在于它们看起来完全像是常量“壹”和“零”。
读者可能会认为这纯属虚构,但我们确曾见过充斥这类名称的代码。有一次,代码作者建议用不同字体写变量名,好显得更清楚些,但前提是这种方案得要通过口头和书面传递给未来所有的开发者才行。后来,只是做了简单的重命名 *** 作,就解决了问题,而且也没引起别的问题。
— 03 —
做有意义的区分
如果程序员只是为满足编译器或解释器的需要而写代码,就会制造麻烦。例如,因为同一作用范围内两样不同的东西不能重名,你可能会随手改掉其中一个的名称,有时干脆以错误的拼写充数,结果就会出现在更正拼写错误后导致编译器出错的情况。
光是添加数字系列或是废话远远不够,即便这足以让编译器满意。如果名称必须相异,那么其意思也应该不同才对。
以数字系列命名(a1、a2…aN)是依义命名的对立面。这样的名称纯属误导——完全没有提供正确信息,没有提供导向作者意图的线索。试看:
如果参数名改为source和destination,这个函数就会像样许多。
废话是另一种没意义的区分。假设你有一个Product类,如果还有一个名为ProductInfo或ProductData的类,那它们的名称虽然不同,意思却无区别。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)
译者: 韩磊
内容简介:
软件质量,不但依赖架构及项目管理,而且与代码质量紧密相关。这一点,无论是敏捷开发流派还是传统开发流派,都不得不承认。
本书提出一种观点:代码质量与其整洁度成正比。干净的代码,既在质量上较为可靠,也为后期维护、升级奠定了良好基础。作为编程领域的佼佼者,本书作者给出了一系列行之有效的整洁代码 *** 作实践。这些实践在本书中体现为一条条规则(或称“启示”),并辅以来自实际项目的正、反两面的范例。只要遵循这些规则,就能编写出干净的代码,从而有效提升代码质量。
本书阅读对象为一切有志于改善代码质量的程序员及技术经理。书中介绍的规则均来自作者多年的实践经验,涵盖从命名到重构的多个编程方面,虽为一“家”之言,然诚有可资借鉴的价值。
我想知道条形码数字和图形是怎么对应的,谁帮我发下图
条码有很多种类型,不同的条码,数字与条码的对应图形也不一样。你要想知道对应关系,要学习条码知识,不是简单的发个图形就懂了。
我想知道条形码6939965670109对应的是什么产品?宁波市鄞州万昌顺塑料电器制造厂的产品。
这个条形码对应的数字是什么?15372901152328
已知条形码(000003732307)数字,有没有人能把他做成对应的条形码不用做了
直接去找他,把条码告诉他就行
我想知道识别图书条形码应该用哪种条形码阅读器?软件我不知道,不过我可以帮你去问下,或者是给我们工程师的****给你,你自己沟通~
硬件的话,最近经常去图书馆,发现现在图书馆一般都是用的平台式的扫描器,打印机就不知道图书馆一般用哪种了~
需要硬件资料的话,我可以发些给你,品牌,型号太多了~
你百度一下都可以,一大把~
我想知道条形码的来历
商品条形码是指由一组规则排列的条、空及其对应字符组成的标识,用以表示一定的商品信息的符号。其中条为深色、空为纳色,用于条形码识读设备的扫描识读。其对应字符由一组 数字组成,供人们直接识读或通过键盘向计算机输人数据使用。这一组条空和相应的字符所表示的信息是相同的。
条形码技术是随着计算机与信息技术的发展和应用而诞生的,它是集编码、印刷、识别、数据采集和处理于一身的新型技术。
使用条形码扫描是今后市场流通的大趋势。为了使商品能够在全世界自由、广泛地流通,企业无论是设计制作,申请注册还是使用商品条形码,都必须遵循商品条形码管理的有关规定。
目前世界上常用的码制有ENA条形码、UPC条形码、二五条形码、交叉二五条形码、库德巴条形码、三九条形码和128条形码等,而商品上最常使用的就是EAN商品条形码。
EAN商品条形码亦称通用商品条形码,由国际物品编码协会制定,通用于世界各地,是目前国际上使用最广泛的一种商品条形码。我国目前在国内推行使用的也是这种商品条形码。EAN商品条形码分为EAN-13(标准版)和EAN-8(缩短版)两种。
EAN-13通用商品条形码一般由前缀部分、制造厂商代码、商品代码和校验码组成。商品条形码中的前缀码是用来标识国家或地区的代码,赋码权在国际物品编码协会,如00-09代表美国、加拿大。45-49代表日本。690-692代表中国大陆,471代表我国台湾地区,489代表香港特区。制造厂商代码的赋权在各个国家或地区的物品编码组织,我国由国家物品编码中心赋予制造厂商代码。商品代码是用来标识商品的代码,赋码权由产品生产企业自己行使,生产企业按照规定条件自己决定在自己的何种商品上使用哪些 数字为商品条形码。商品条形码最后用1位校验码来校验商品条形码中左起第l-12数字代码的正确性。
商品条形码的编码遵循唯一性原则,以保证商品条形码在全世界范围内不重复,即一个商品项目只能有一个代码,或者说一个代码只能标识一种商品项目。不同规格、不同包装、不同品种、不同价格、不同颜色的商品只能使用不同的商品代码。
商品条形码的标准尺寸是3729mmx2626mm,放大倍率是08-20。当印刷面积允许时,应选择10倍率以上的条形码,以满足识读要求。放大倍数越小的条形码,印刷精度要求越高,当印刷精度不能满足要求时,易造成条形码识读困难。
由于条形码的识读是通过条形码的条和空的颜色对比度来实现的,一般情况下,只要能够满足对比度(PCS值)的要求的颜色即可使用。通常采用浅色作空的颜色,如白色、橙色、**等,采用深色作条的颜色,如黑色、暗绿色、深棕色等。最好的颜色搭配是黑条白空。根据条形码检测的实践经验,红色、金色、浅**不宜作条的颜色,透明、金色不能作空的颜色。
EAN-8商品条形码是指用于标识的数字代码为8位的商品条形码,由7位数字表示的商品项目代码和1位数字表示的校验符组成。
商品条形码的诞生极大地方便了商品流通,现代社会已离不开商品条形码。据统计,目前我国已有50万种产品使用了国际通用的商品条形码。我国加人世贸组织后,企业在国际舞台上必将赢得更多的活动空间。要与国际惯例接轨,适应国际经贸的需要,企业更不能慢待商品条形码。
部分国家地区(EAM)成员的条形码前缀码
美国、加拿大00-09以色列729丹麦57
(店内码)20-29委内瑞拉759挪威70
日本45-49乌拉圭773瑞士76
比利时/卢森堡54玻利维亚773西班牙84
芬兰64智利780奥地利90-91
瑞典73厄瓜多尔786新西兰94
意大利80-83古巴850斯洛文尼亚383
荷兰87捷克859德国400-440
澳大利亚93韩国880台湾471
保加利亚380新加坡888拉脱维亚475
克罗地亚385马来西亚893斯里兰卡479
俄罗斯460-469越南977香港489
爱沙尼亚474墨西哥750塞浦路斯529
立陶宛477哥伦比亚770马耳他535
菲律宾480秘鲁775葡萄牙560
希腊520阿根廷779波兰590
马其顿531巴拉圭784匈牙利599
爱尔兰539巴西789毛里求斯609
冰岛569斯洛伐克858阿尔巴尼亚613
罗马尼亚594南斯拉夫860中国大陆690-692
南非600-601泰国885法国30-37
摩洛哥611印度890英国50
土耳其619、869印度尼西亚899咱们国家的条形码都是以69开头,如果不是69那就属于进口货品
新申请的条形码,但是只给了胶片和光盘,怎么知道哪个条形码对应的产品?是自行为产品编制4位的编码, 加上前面8位企业编码和最后1位检验码组成13位商品条码没有
对应的产品编码规则这回事
word怎么把条形码数字去掉你这是通过系统自动添加的数字和二维码,需要找程序员来重新设置格式才能去掉条形码。
bartender94怎么改条形码数字如果你选择了EAN-13商品条形码的符号体系,你输入的数字位数必须是带有正确校验位的13为数字,或者是输入12位的数字,最后一位自动校验生成,否则条形码在检查数据源格式时,就会报错。
“请问如何更改,我要改其中的数字来代表不同的东西!”,你是自己公司申请的商品条形码的嘛?如果是,可以通过更改12位数字的后面3位来代表不同的东西,然后一个条码记录一种商品,不可以进行重复使用。
如果你没有申请过商品条码,那你是不可以使用EAN-13这个符号体系的,你可以使用CODE128码这个符号体系来进行条形码的制作,CODE128码对长度和内容没有太多限制,你进行任何更改和编辑都是可以的,你输入键盘上面任意的英文字母和数字都是可以进行编辑的。
条形码数字字体WINDOWS系统可以将条码认为是一种字体,所以下载一个条码字体即可,可以在百度上搜索网页,关键字"条码字体"WINDOWS系统可以将条码认为是一种字体,所以下载一个条码字体即可,可以在百度上搜索网页,关键字"条码字体"
自己做网站的步骤如下:
1、域名注册。网站建设首先你需要一个属于你自己的网址,也就是域名。
2、网站空间注册。网站空间是用来放网站程序的。网站空间分为ASP、PHP、NET,三种类型。
3、网站备案
国内的网站空间都需要备案,没有备案的网站不允许上线。
4、上传网站程序
网上有很多免费网站程序,论坛(discuz)、博客(Emlog、WordPress、Z-blog)、综合站(PageAdminCMS系统)等,根据自己的网站来选择程序。
5、添加网站内容。我们可以在备案期间来完成网站内容添加,添加网站内容也是比较简单。进入网站后台新建网站栏目,自己需要几个栏目就建几个。
6、解析域名和绑定域名。备案号后通过我就可以把域名解析到空间IP上了,域名解析完成后,再在空间的管理面板上把解析好的域名绑定。在地址栏输入你的域名。就可以访问到你的网站。
以上就是关于编程5分钟,命名2小时!大神程序员都在用这套命名方法全部的内容,包括:编程5分钟,命名2小时!大神程序员都在用这套命名方法、我想知道条形码数字和图形是怎么对应的,谁帮我发下图.、可以自己做网站吗如何做等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)