《从零开始学Swift》学习笔记(Day 59)——代码排版_大括号内的代码块首行之前_一度_iOSDeveloper的博客-程序员秘密

技术标签: 《从零开始学Swift》学习笔记  swift  

代码排版包括: 空行、空格、断行和缩进等内容。代码排版内容比较多工作量很多,但是非常重要。
空行
空行将逻辑相关的代码段分隔开,以提高可读性。下列情况应该总是添加空行:
 类型声明之前。
 import语句前后。
 两个方法或函数之间。
 块注释或单行注释之前。
 方法或函数内的两个逻辑段之间,用以提高可读性。
 一个源文件的两个片段之间。

空格
在代码中有些位置是需要有空格的,这个工作量也是很大的。下列是使用空格的规范:
1.赋值符号“=”前后有一个空格。var或let与标识符之间有一个空格。所有的二元运算符,应该使用空格将之与操作数分开。一元操作符和操作数之间不因该加空格,如:++、--等。示例如下。
var a = 10
var c = 10
a += c + d

2. 小左括号“(”之后,小右括号“)”之前不要有空格。示例如下。
a = (a + b) / (c * d)

3. 大左括号“{”之前有一个空格。示例如下。
while a == d {
    n++
}

4. 在方法或函数参数之前间有一个空格,参数冒号与数据类型之间有一个空格。
推荐使用:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {

    ...
}
不推荐使用:
func tableView ( tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath ) {
    ...
}

断行
一行代码的长度尽量避免超过80个字符,为了便于查看是否一行代码超出80个字符,很多IDE开发工具都可以在编辑窗口设置显示80行竖线。在Xcode中设置过程是打开菜单Xcode→Preferences,选择Text Editing标签,选中Show→Page guide at column。

由于有的代码比较长需要断行,可以依据如下一般规范断开:
 在一个逗号后面断开。
 在一个操作符前面断开,要选择较高级别运算符断开,而非较低级别运算符断开。
 新的一行应该与上一行缩进两个级别(8个空格)

缩进
4个空格常被作为缩进排版的一个单位,在开发时候使用制表符进行缩进,虽然默认情况下一个制表符等于8个空格,但是在不同的IDE工具中可能设置的一个制表符与空格对应个数会有所不同。在Xcode中默认是一个制表符对应4个空格,我们可以在Xcode中打开菜单Xcode→Preferences,选择Text Editing→Indentation标签,可以在Tab width中进行设置。

缩进可以依据如下一般规范:
 在函数、方法、闭包、控制语句、计算属性等包含大括号“{}”代码块中,代码块中的内容与首行缩进一个级(4个空格)。
 如果是if语句中条件表达式的断行,那么新的一行应该与上一行缩进两个级别(8个空格),再往后的断行要与第一次的断行对齐。
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yidu_blog/article/details/53885645

智能推荐

使用SeleniumWebDriver开始自动化-简单示例_seleniumwebdriver示例_水滴测试的博客-程序员秘密

使用Selenium WebDriver进行自动化非常方便,下面通过一个示例进行说明。   一、下载Selenium组件包     打开Selenium官网:    http://www.seleniumhq.org/download/            选择Java版本,下载完成后如下图内容。            二、JavaIDE中引用Seleni

MAVLink与UDP_土豆要学习的博客-程序员秘密

https://blog.csdn.net/oqqENvY12/article/details/61615609

Tensorflow制作并用CNN训练自己的数据集_Nick Blog的博客-程序员秘密

本人初学Tensorflow,在学习完用MNIST数据集训练简单的MLP、自编码器、CNN后,想着自己能不能做一个数据集,并用卷积神经网络训练,所以在网上查了一下资料,发现可以使用标准的TFrecords格式。但是,遇到了问题,制作好的TFrecords的数据集,运行的时候报错,网上没有找到相关的方法。后来我自己找了个方法解决了。如果有人有更好的方法,可以交流一下。1. 准备数据我准备的是猫和狗两...

Spring中注册Bean的方式有哪些?_spring注册bean方式_每天都要进步一点点的博客-程序员秘密

目录一、概述二、第一种方式: XML配置方式三、第二种方式: 使用@Component注解 + @ComponentScan包扫描方式四、第三种方式:@Configuration + @Bean方式五、第四种方式:FactoryBean方式六、第五种方式:@Import方式七、第六种方式:@Import + ImportSelector方式八、第七种方式:@Import + ImportBeanDefinitionRegistrar方式九、第八种方式:BeanDefi

tensorflow-gpu==1.13.2运行出错:DDL或import tensorflow找不到指定模块_苏歆_sssuxin的博客-程序员秘密

这是tensorflow和cuda之间的匹配问题,笔者在最初接触神经网络学习的时候,tensorflow1的时候确实没能成功使用,当时是使用pytorch进行了学习。 后来笔者探索了一番学习后,转战linux和win10,对环境配置有了一定的理解,重新回到win10,成功使用了tensorflow2.2版本训练与检测。然而最后因为一些需求重新使用tensorflow-gpu版本训练yolov3的时候还是出现了问题。问题如下:1.ImportError: DLL load...

deblock 未曾想到的痛苦 _deblock 博客_aawaterbit的博客-程序员秘密

那天摄像时背景是雪白的墙,结果解码时问题出现了。问题现象:        解码的图像在墙壁部分有很明显的方块,其它图像变化大的地方(如人脸部分)情况还好。问题分析:        以前没有这种情况的呀。改变了的只有编码速率。原来为了兼顾网络状况,我们将码率降得比较低。码率小,量化的精度就低,宏块与宏块之间的量化误差变大。当颜色变化很平缓时,这种很小的误差就变得明显了,图像上的体现就是宏块边

随便推点

MySQL数据类型 -- 数值型_数据库数值型数据_Leshami的博客-程序员秘密

在MySQL关系型数据库中,MySQL支持的数据类型非常丰富。它主要分为3大类,即:数值型,日期时间性,字符型。而实际上这三类数据类型可以进一步的细分扩展,可以根据业务需要选择最适合的一种。本文主要介绍数值类型,并演示其用法。###一、数值型MySQL支持所有标准SQL的所有数值类型。在MySQL中,主要分为以下2大类。一类是整数类型,一类是浮点数类型,如下图所示。整数类型  上图中列出...

基于AD09的四层板设计概要_qq_42041980的博客-程序员秘密

本文基于AD 09使用环境下说明,电路仅是简单示例电路。以下四层板采用singal-GND-VCC-singal四层结构。在项目工程中新建PCB文件,这个时候只有通常两层板的顶层、底层两层。创建中间两层的方法有两个:1.Design-Layer Stack Manager-menu-Example Layer Stacker-Four Layer2.第二种是手动一层层添加,选中Top L...

调用malloc时发生了什么(2) - sys_brk函数与VMA_Mrpre的博客-程序员秘密

调用malloc时发生了什么(2) - sys_brk函数在上一篇中我们讲过,malloc实际调用了brk函数完成堆的分配,也了解了进程的内存布局。现在我们来看看,进程的内存布局到底是怎么实现的。具体如何堆指针增加减少的。增加减少,堆进程的影响是什么?一系列的问题等着我们去解决。sys_brk函数(去掉了与本篇无关的代码)SYSCALL_DEFINE1(brk, unsigned

crm 部署_zflhw的博客-程序员秘密

supervisor+uwsgi+nginx+django+mysql这些事设计到的技术supervisor:一键启停uwsgiuwsgi:让django在Linux上支持并发形式,支持多进程,多线程,乃至于协程的C语言编写高性能工具1.先创建虚拟环境,用于运行crm[[email protected] crm]# virtualenv --python=python3 venv_crmso...

db2 -964解决方法_hlsps的博客-程序员秘密

SQLState '57011' and errorCode '-964'查找原因db2 "?sql=0964"  原因:数据库的日志文件已满  解决方法:修改日志文件大小(加大),增加日志文件个数,增加辅助日志文件个数(三个修改参数可以任意选择)  查看数据库的配置参数:db2 "get db cfg for <dbname>  |grep LOG"     ...

断点续传的原理剖析与讲解_讲解断点续传可以举什么例_小志伟的博客-程序员秘密

本文所要讲的是Android断点续传的内容,以实例的形式进行了详细介绍。       一、断点续传的原理       其实断点续传的原理很简单,就是在http的请求上和一般的下载有所不同而已。       打个比方,浏览器请求服务器上的一个文时,所发出的请求如下:       假设服务器域名为www.jizhuomi.com/android,文件名为down.zip

推荐文章

热门文章

相关标签