代码规范:换行对齐问题

今天有同事看了我写的代码,问为何逗号要放在前面,以下列两段代码为列:

代码段一

void function(int a

            , char b

            , short c

            , long d

            , struct* e)

{

}

代码段二:

int x = a

      + b

      + c

      + d;

对一于单行代码过长时,采取换行,这个没有什么可争议的,主要焦点在新的一行从哪开始,通常有两派,一派就是如上述两段代码所示,另一派则采用如下规范:

void function(int a,

              char b,

              short c,

              long d,

              struct* e)

{

}

在刚出道的前几年,我采用的是逗号置尾风格,但后来,我一直采用逗号置前的风格,因为我认为这样做更好,为什么会更好了?先提一个问题:换行的目的是什么?我想答案应当是:让代码更清晰,可读性更好,也让书写更不容易犯错误。总结起来有以下几条好处:

1.代码更清晰(这条不是独特的,因为逗号置尾也一样具备)

2.逗号有类似于1、2、3的标识作用,如同在写WORD或PPT文档时列出一、二、三、四

3.有注释的作用,可以将逗号看成注释符,可以更清楚的标明这是一行的开始

4.可增加代码的观赏性,统一以逗号打头,显得更有美感

有些时候,简单换行仍可能导致单行过长,这个时候可改变对齐点,我一般如下做:

void function(

      int a

    , char b,

    , short c,

    , long d,

    , struct* e)

{

}

这样基本可以解决大多数参数列表过长问题,对于表达式过长的问题,采取同样的解决方式。

我们需要规范,但不应当是死板的规范,最好可让它展现出一点活力,比如对于二目操作符的空格问题,就应当有柔性,而不是不分场合统一前后空一格,如:

int x = (a + b) / M;

虽然很规范,但从美观上来说,不协调,如同一个人身材虽棒,但却如水桶,也许下面的做法更好:

int x = (a+b) / M;

让a和b更紧凑点,整体上看起来就协调多了。还有一些类似的,比如不要头重脚轻,象:

if (false)

{

    int m = x[i];

    int d = foo(m);

    woo(d);

}

else

{

    ++i;

}

这个就长了个大脑袋,很多小孩子就是这样,头大大的,颠倒过来成人:

if (true)

{

    ++i;

}

else

{

    int m = x[i];

    int d = foo(m);

    woo(d);

}

现在就符合我们日常的审美了。细节不一定决定成败,但一定影响品质,电路板就是一个好的见证。开源项目mooon在遵循规范的同时,也一直在努力提升代码的美感。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏vue学习

【干货】前端自学之路(持续更新)

《JavaScript Dom编程艺术》 《JavaScript面向对象编程指南(基础)》 《JavaScript高级程序设计》 《高性能JavaScri...

2122
来自专栏编程

C语言嵌入式系统编程修炼之键盘操作

这是我13年前创作和发表在互联网上的文章,这么多年过去了,这篇文章仍然在到处传播。现在贴回Linuxer公众号。 全文目录: C语言嵌入式系统编程修炼之道——背...

2479
来自专栏云飞学编程

跟我学爬虫,看大神不到30行代码做的一个简单爬虫!

已经看了那么多基础知识了,下面我们做几个实战项目来挑战一下吧。这次为大家带来,Python爬取校花网美女图片的例子。

2642
来自专栏极乐技术社区

微信小游戏初体验

前言 上周【跳一跳】小游戏刷遍了朋友圈,也代表了微信小程序拥有了搭载游戏的功能(早该往这方面发展了,这才是应该有的形态嘛)。作为一个前端er,我的大刀早已经饥渴...

1.3K7
来自专栏java一日一条

Jsoup代码解读之四-parser(上)

作为Java世界最好的HTML 解析库,Jsoup的parser实现非常具有代表性。这部分也是Jsoup最复杂的部分,需要一些数据结构、状态机乃至编译器的知识。...

971
来自专栏用户2442861的专栏

Python基础学习笔记之(一)(华工大神)

       前段时间参加微软的windows Azure云计算的一个小培训,其中Python被用的还是蛮多的。另外,一些大公司如Google(实现web爬虫...

1791
来自专栏CSDN技术头条

Java 平台反应式编程(Reactive Programming)入门

反应式编程(Reactive Programming)对有些人来说可能相对陌生一点。反应式编程是一套完整的编程体系,既有其指导思想,又有相应的框架和库的支持,并...

1.8K6
来自专栏Golang语言社区

Go语言实现控制台贪吃蛇

各位好 今天在关注GO相关文章的时候,看到一篇关于go语言实现贪吃蛇的文章,原文地址:http://outofmemory.cn ;尝试编译了...

4557
来自专栏Python攻城狮

爬取拉勾网招聘信息并使用xlwt存入Excel

通过浏览器自带的开发者工具查看是通过Post方式提交的,数据是通过Ajax(异步加载)得到的

864
来自专栏FreeBuf

又见卡死图,竟然一个“小黑点”就能干掉QQ?

前一阵子QQ群里流行了一个东西,一段话加上一个黑点(表情),点击之后QQ就会卡死。(文内链接请点击“阅读原文”查看)

1325

扫码关注云+社区

领取腾讯云代金券