如何让命名变得优雅

1.概述

  在写这篇文章时,我也是酝酿了许久;在平时编码时,也经常苦于如何命名让变量,函数及类变都优雅,美观。因为,有时候看回过头来看代码发现,一个变量或是函数名特别是有单词组合都时候,会觉得有些单词组合在一起,看起来很别扭。举个例子,如类型统计:typeStats,statsType,categoryStats,statsCategory。其中2看的最别扭,3其次,1和4都还可以接受。当然这个也不是说2,3不行,这里我只是想说明命名之前,我尽可能的多组合自己的变量,使最后的命名更加优雅。

2.心得

  这里总结一下自己在平时多使用心得,故总结以下心得:

  2.1不同多代码段采用不同段命名长度

类型 长度
循环变量 1
方法 1-2
2-3
全局变量 3-4

  2.2对变量采用具体对命名方式

  “value”,“equals”,“data”在任何情况下都不是一种有效对命名方式。

  2.3采用有意义对命名

  变量的名字必须能够准确反应它的含义和内容。

  2.4变量不需要前缀标签来表示自己使一个变量

  如: n_,obj_,_p

  2.5遵循公司的变量命名规则,在项目中坚持使用同一种变量命名方式

  如:txtUserName,lblUserName,cmbIsAdmin等,否则会对可读性造成影响,而且会令查找/替换工具(find/replace tools)不可用。

  2.6遵循当前语言对变量命名规则

  在命名使,要和当前的命名规则匹配,不要另起规则。常见的问题:userName,username,UserName,USER_NAME等。

以Java的规则为例:

  • 类名使用驼峰命名法:AppDedail
  • 包名使用小写:cn.company.utils(cn.company.业务名)
  • 变量使用首字母小写的驼峰命名法:appInfo
  • 常量使用全大写:MAX_SIZE
  • 枚举类采用驼峰命名法,枚举值采用全大写:Configure,APP,APP_NAME
  • 除了常量和枚举值以外,不要使用下划线:“_”

  2.7在同一个类不同的场景中不要复用变量名

  

 1 public class App{
 2       public App(String appName){
 3             String name = appName;
 4             // ....... 省略后面的代码 ......
 5       }
 6
 7       public void show(AppDetail app){
 8             String name = app.getAppName();// 构造方法中已使用name变量
 9             String appName = app.getAppName();
10       }
11 }

  如:在方法,初始化方法和类中,这样做可以提高可读性和可维护性。

  2.8不要对不同使用目的对变量使用同一变量名

  同2.7一样,赋予它们不同的名字,这样对保持可读性和可维护性很重要。

  2.9变量名不要使用非ASCII字符

  这样做的后果会导致在跨平台使用时产生问题。

  2.10不要使用过长的变量名

  变量名不要超过50字符,过长的变量名会导致代码丑陋和难以阅读,还可能因为字符限制在某些编译器上存在兼容性问题。

  2.11仅使用一种自然语言来命名

  例如:在同时使用英语和日文来命名会导致理解不一致和降低代码的可读性。

  2.12使用有意义的方法名

  方法名必须准确表达该方法的行为,在多数情况下以动词开头,如:createPassword。

  2.13遵循公司的方法命名规则

  在项目注坚持使用同一种方法命名方式,如:getTxtUserName(),isAdmin(),updateUserInfo(),否则会对可读性造成影响,而且会令查找/替换工具不可用。

  2.14遵循当前语言的变量命名规则

  在命名时,不要不统一的使用大小写字母,如:

  以Java为例:

  • 方法使用首字母大小写的驼峰命名法:getStudentInfo
  • 方法参数使用首字母大小写的驼峰命名法:insertStudentInfo(Student stu)

  2.15使用有意义的方法参数命名

  这样做可以在没有文档的情况下尽量做到“见明知意”。

3.总结

  细节很重要,平时编码时需要注意的一些细节,时刻记住,我们编码是为了让别人更好的去阅读你的代码,而不是“迷惑”别人。一次在阅读代码时发现以前一哥们写的注释,我瞬间内心暖暖的。大概内容如下:

private int getSummary(Manager manager){
       //  为了BT的需求,破坏了代码优雅的结构( ̄▽ ̄)
}

  最后说一句,同是程序员,程序员何苦为难程序员!!!

时间: 2024-11-06 18:44:02

如何让命名变得优雅的相关文章

zeptoJS:如何像jQuery一样,让滚动变得优雅?

利用jQuery的animate() 方法,我们很容易实现滚动条的平滑滚动效果: $(function() { $('#top').click( function (e) { $('html, body').animate({scrollTop: '0px'}, 1000); return false; } ); }); 在线示例:利用jQuery实现的返回顶部 最近在做基于zeptoJS手机网页开发,遇到类似需求,实践之后发现zeptoJS并不像Jquery一样支持scrollTop()方法,

如何让编码更加的标准

1.概述 在写这片博文时,我也是思绪良久,参考了不同语言的编码风格,最后总结出如何让自己的编码更加标准. 2.基础 以Java的基础为例子来说明: 文件编码格式为UTF-8 package需要置于最顶层 import包时,使用eclipse的快捷键(command+1)倒入对应的包(这样我们可以不用考虑包的顺序如何排列) 格式化代码采用eclipse的快捷键(command+shift+f)进行格式代码 if,else,for,while等语句,必须加上大括号({}),即使语句为空 代码块缩进,

如何优雅的写一篇安利文-以Sugar ORM为例

前言 我最近喜欢把写的十分优美的技术文章叫做安利文.首先,文章必须是原创而非软广:其次,阅读之后不仅能快速吸纳技术要点并入门开发,还能感同身受的体会作者热情洋溢的赞美和急于分享心得体验的心情,让人感觉相见恨晚,醍醐灌顶. 安利文基于技术文章但又高于技术文章,同是经验总结,但却因为作者认真的揣摩每一个标点.断句而变得优雅.一篇满是主观感受的文章却不嚼之乏味,作者用心的指出每一个需要注意的技术亮点在文字中如蛟龙戏水,让阅读者大呼过瘾.因此,我觉得能原创分享一篇技术文章精神已经难能可贵,但若能锦上添花

精简高效的css命名准则

对于css,为了避免样式冲突,我们总会赋予相当特殊的命名,或是在选择符上添加html标记,或是使用层级.我们为避免在冲突上做文章,就会把代码的命名变得复杂化. 如果css的重用性越高,相比就越高效.如果名字越普通就越没有含义,越容易被重用,所以css想要重用性高,就需要命名简单.但是,简单的命名越容易造成冲突 面向属性的命名方法 我们习惯在css命名的时候掺杂语义,这样可以让代码更易懂.例如淘宝中免费注册:help-guest-regist .l{float:left} .r{float:rig

Maya脚本——重命名物体的名称

该脚本用于将图1中的命名变更为图2中的,把maya中使用相同名称的物体都重命名为不同的名称. 重命名的规则是:组名_原名称_序号 查阅了maya的官方手册:http://download.autodesk.com/global/docs/maya2012/zh_cn/index.html 可以用下述方式在脚本编辑器里查看命令的使用方法: help ls; 用maya自带的脚本编辑器编辑mel脚本,贴上脚本代码: 1 string $ls_names[] = `ls -tr`; //得到大纲视图下

java优雅的使用elasticsearch

本文给出一种优雅的拼装elasticsearch查询的方式,可能会使得使用elasticsearch的方式变得优雅起来,使得代码结构很清晰易读. 建立elasticsearch连接部分请参看另一篇博客:http://www.cnblogs.com/kangoroo/p/7127003.html 1.ESDao -- 类似DB中的dao层 封装了增删改查ES的各种方法 package com.dqa.sentinel.client.es; import com.xiaoju.dqa.sentine

python 字符串替换功能 string.replace()可以用正则表达式,更优雅

说起来不怕人笑话,我今天才发现,python 中的字符串替换操作,也就是 string.replace() 是可以用正则表达式的. 之前,我的代码写法如下,粗笨: 自从发现了正则表达式也生效后,代码变得优雅简洁: 备注:上图中的base_info 是 pandas 里的 dataframe 数据结构,可以用上述方法使用 string 的 replace 方法. 原文地址:https://www.cnblogs.com/jjliu/p/11514226.html

mongoDB (mongoose、增删改查、聚合、索引、连接、备份与恢复、监控等等)

MongoDB - 简介 官网:https://www.mongodb.com/ MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写,旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的. MongoDB - 安装及运行 下载 07/05/2017 Current Stable Release (3.4.6) https://www.mongodb.com/dow

iOS开发笔记--iOS开发规范

iOS开发规范 原文地址:http://blog.csdn.net/pjk1129/article/details/45146955 引子 在看下面之前,大家自我检测一下自己写的代码是否规范,代码风格是否过于迥异阅读困难?可以相互阅读同伴的代码,是否存在阅读障碍? 若存在晦涩难懂的,理解成本增大的代码,说明你的团队需要自省了. 下面总结一下OC编程中的一些代码规范(苹果官方推荐的).以OC为示例,但不局限于OC,也可以被当作别的编程语言的开发规范约定(仅需要把OC特有的东西按照你所使用的语言的惯