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)的更多相关文章

  1. vs code代码对齐快捷键

    vscode缩进快捷键: 选中文本: Ctrl  +  [      和   Ctrl  +  ]     实现文本的向左移动或者向右移动: vscode代码对齐快捷键: 选中文本: Shift  + ...

  2. vs快捷键代码格式化或代码对齐名字

    开发人员,换个电脑后环境要重装,vs的环境也需要重新设置. 快捷键需要重新设置,插件也需要重装,在这里备注下,换个环境就可以直接用了. 由于vs不同版本,代码对齐或者代码格式化的快捷键都不一样,所以导 ...

  3. multiple-cursors做代码对齐

    multiple-cursors做代码对齐 */--> code {color: #FF0000} pre.src {background-color: #002b36; color: #839 ...

  4. Code Snippets 代码片段

    Code Snippets 代码片段       1.Title : 代码片段的标题 2.Summary : 代码片段的描述文字 3.Platform : 可以使用代码片段的平台,有IOS/OS X/ ...

  5. Effective Java提升Code Coverage代码涵盖率 - 就是爱Java

    虽然我们已经有了测试程序,但是如何得知是否已完整测试了主程序?,透过Code Coverage代码涵盖率,我们可以快速地得知,目前系统中,有多少程序中被测试过,不考虑成本跟投资效益比,涵盖率越高,代表 ...

  6. 自动生成Code First代码

    自动生成Code First代码 在前面的文章中我们提到Entity Framework的“Code First”模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Fram ...

  7. 第五次作业2、请将该code进行代码重构,使之模块化,并易于阅读和维护;

    1.请运行下面code,指出其功能: (需附运行结果截图,并用简短文字描述其功能) 显示了人的姓名.年龄 2.请将该code进行代码重构,使之模块化,并易于阅读和维护: 3.观看视频The Exper ...

  8. Code::Blocks代码自动提示设置及常用快捷键

    Code::Blocks代码自动提示设置及常用快捷键(适用windows和linux) 1)以下需要设置的地方均在Settings->Editor...弹出的对话框中. 2)不少命令都可针对当前 ...

  9. VS中代码对齐等快捷键

    在VS2008中,选定代码后,按Ctrl+K+F组合键,可以自动进行代码对齐. 注意:要先按下Ctrl和K,再按下F,因为Ctrl+F是查找的快捷键. 也可以先按下Ctrl+K,再按下Ctrl+F. ...

随机推荐

  1. 获取当前操作系统的ip

    代码如下: #include "stdafx.h" #include <WinSock2.h> int get_local_ip() { WSADATA wsaData ...

  2. codeforces - 432D Prefixes and Suffixes (next数组)

    http://codeforces.com/problemset/problem/432/D 转自:https://blog.csdn.net/tc_to_top/article/details/38 ...

  3. UVa 11134 Fabled Rooks(贪心)

    题目链接  题意  在n*n的棋盘上的n个指定区间上各放1个'车’ , 使他们相互不攻击(不在同行或同列),输出一种可能的方法. 分析 每行每列都必须放车,把行列分开看,若行和列同时有解,则问题有解. ...

  4. 枚举专项练习_Uva725(Division)_Uva11059(Maximun Product)

    //Uva725 #include <iostream> #include <cstring> #include <cstdlib> #include <cs ...

  5. python -- 异步IO 协程

    python 3.4 >>> import asyncio >>> from datetime import datetime >>> @asyn ...

  6. IIC AT24C02读写数据的一点小体会

    一.写数据 unsigned char I2CWriteByte(unsigned int mem_addr,unsigned char*DDATAp,unsigned int count) { u8 ...

  7. PHP 获取给定时间的周日时间或月末时间或每天

    //获取给定时间的周日时间或月末时间或每天 private function endDate ($time, $type = 1, $openTime = '20:00:00') { if ($typ ...

  8. adb的使用

    前面配置了环境变量,可以在计算机任何位置打开cmd窗口使用adb. 连接android应用 使用connect命令连接盒子的ip(要确保电脑所连接的网络和盒子是一个网络) 抓日志 抓取某一个操作过程的 ...

  9. case7 淋巴瘤子类分类实验记录

    case7 淋巴瘤子类分类实验记录 简介 分类问题:3分类 (identifying three sub-types of lymphoma: Chronic Lymphocytic Leukemia ...

  10. 提高CPU使用率100%

    直接上脚本: #!/bin/bash while true do echo 2^2^20 | bc & >/dev/null done 查看CPU使用率用top命令即可 释放CPU: p ...