Code alignment 代码对齐改进(VS2017)
In mathematics you always keep your equals lined up directly underneath the one above. It keeps it clean and lets you know you're working on the same problem, for example:
y = 2x
y/2 = x
Programming is slightly different. We often have a lot of assignments underneath each other, and while they are not strictly the same as maths, there is a close relationship. As such, aligning the equals allows us to quickly spot the relationship.
Further, it makes your code so much more readable. Without alignment, code is like opening a CSV file in Notepad. But, if you open the CSV file in Excel, it becomes so much easier to read since the columns have meaning.
Compare these:
person.FirstName = "Chris"; => person.FirstName = "Chris";
person.Surname = "McGrath"; => person.Surname = "McGrath";
person.Age = 24; => person.Age = 24;
person.Occupation = "Software Developer"; => person.Occupation = "Software Developer";
person.HomeTown = "Brisbane"; => person.HomeTown = "Brisbane";
I question the sanity of anyone who thinks the first looks better or is easier to understand.
The Code alignment extension allows you to align by more than just the equals. As you start to see the benefits of alignment, you see that there is so much more to align by:
// Ugly // An improvement // Even better!
chris.Age = 25; => chris.Age = 25; => chris .Age = 25;
dan.Age = 23; => dan.Age = 23; => dan .Age = 23;
michael.Age = 27; => michael.Age = 27; => michael .Age = 27;
jennifer.Age = 22; => jennifer.Age = 22; => jennifer.Age = 22;
By aligning by the dot we can clearly see that we are setting the same property on each variable, and the thing that changes is the variable name.
This might seem a bit crazy now, but once you start aligning things, it's addictive.
Some more examples
private string m_firstName = string.Empty; => private string m_firstName = string.Empty;
private string m_surname = string.Empty; => private string m_surname = string.Empty;
private int m_age = 18; => private int m_age = 18;
private Address m_address; => private Address m_address;
public string FirstName { get; set; } => public string FirstName { get; set; }
public string Surname { get; set; } => public string Surname { get; set; }
public int Age { get; private set; } => public int Age { get; private set; }
private Address Address { get; set; } => private Address Address { get; set; }
Assert.AreEqual("expected", person.Name); => Assert.AreEqual ("expected", person.Name);
Assert.AreEqual(21, person.Age); => Assert.AreEqual (21, person.Age);
Assert.AreNotEqual(other, person); => Assert.AreNotEqual(other, person);
switch (state) => switch (state)
{ => {
case State.QLD: city = "Brisbane"; break; => case State.QLD : city = "Brisbane"; break;
case State.WA: city = "Perth"; break; => case State.WA : city = "Perth"; break;
case State.NSW: city = "Sydney"; break; => case State.NSW : city = "Sydney"; break;
default: city = "???"; break; => default : city = "???"; break;
} => }
It's surprising how few developers align their code.
Code alignment 代码对齐改进(VS2017)的更多相关文章
- vs code代码对齐快捷键
vscode缩进快捷键: 选中文本: Ctrl + [ 和 Ctrl + ] 实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift + ...
- vs快捷键代码格式化或代码对齐名字
开发人员,换个电脑后环境要重装,vs的环境也需要重新设置. 快捷键需要重新设置,插件也需要重装,在这里备注下,换个环境就可以直接用了. 由于vs不同版本,代码对齐或者代码格式化的快捷键都不一样,所以导 ...
- multiple-cursors做代码对齐
multiple-cursors做代码对齐 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839 ...
- Code Snippets 代码片段
Code Snippets 代码片段 1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...
- Effective Java提升Code Coverage代码涵盖率 - 就是爱Java
虽然我们已经有了测试程序,但是如何得知是否已完整测试了主程序?,透过Code Coverage代码涵盖率,我们可以快速地得知,目前系统中,有多少程序中被测试过,不考虑成本跟投资效益比,涵盖率越高,代表 ...
- 自动生成Code First代码
自动生成Code First代码 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Fram ...
- 第五次作业2、请将该code进行代码重构,使之模块化,并易于阅读和维护;
1.请运行下面code,指出其功能: (需附运行结果截图,并用简短文字描述其功能) 显示了人的姓名.年龄 2.请将该code进行代码重构,使之模块化,并易于阅读和维护: 3.观看视频The Exper ...
- Code::Blocks代码自动提示设置及常用快捷键
Code::Blocks代码自动提示设置及常用快捷键(适用windows和linux) 1)以下需要设置的地方均在Settings->Editor...弹出的对话框中. 2)不少命令都可针对当前 ...
- VS中代码对齐等快捷键
在VS2008中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐. 注意:要先按下Ctrl和K,再按下F,因为Ctrl+F是查找的快捷键. 也可以先按下Ctrl+K,再按下Ctrl+F. ...
随机推荐
- POJ 2796[UVA 1619] Feel Good
Feel Good Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 16786 Accepted: 4627 Case T ...
- ubuntu16.04.1下安装mysql
版本信息 ubuntu版本:16.04.1 mysql-server版本:5.7.23 安装 先查看一下apt可获取的mysql版本 ubuntu@VM-0-4-ubuntu:~$ apt searc ...
- 在html中控制自动换行
其实只要在表格控制中添加一句<td style="word-break:break-all">就搞定了.其中可能对英文换行可能会分开一个单词问题:解决如下:语法: ...
- Mongodb 副本集
mongodb主从模式就是一个 单副本的应用:没有很好的扩展性和容错性: 副本集的多个副本保证了容错性:主服务器负责整个副本集的读写,副本集定时同步数据:主节点挂掉:副本集会自动选举一个主的服务器: ...
- MySQL指令
在mysql里:文件夹就是数据库 文件就是表 创建用户: 格式:create user '用户名'@'IP地址' identified by '密码'; 说明:IP地址是用来限制用户只能在哪 ...
- 第16月第9天 opengl glCltDispatchTable
1.glCltDispatchTable typedef struct _GLTEBINFO { // glCltDispatchTable must be the first field for t ...
- getattr getattribute setattr hasattr delattr
getattr是返回对象属性value的函数,用法:getattr(object,attribute_name[,default]) 如果对象拥有属性,则返回属性value,如果对象没有该属性并且也没 ...
- transform 图标旋转,IE8、IE7不兼容
要将图标旋转,只需使用transform的rotate以及transition即可完成旋转的动画效果.ease 规定慢速开始,然后变快,然后慢速结束的过渡效果; ease-in 规定以慢速开始的过 ...
- js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结
想在点击"终端控制"的时候能够开启多个窗口对多个终端进行管理: /**提交事件**/ $("#terminalControl").bind("clic ...
- MySQL内连接、外连接、交叉连接
外连接: 左连接:left join 或 left outer join 以左边的表为基准,如果左表有数据,而右表没有数据,左表的数据正常显示,右表数据显示为空. 创建user表,用于记录用户 use ...