怎么写一个好看的程序

刚刚快要结束和计科导的羁绊,又要面对C语言这个磨人的小妖精了,选课何去何从,小编先来帮大家理清一下他俩的关系。

计算机科学导论课程

与程序设计基础与实验课程

教学所使用的程序设计语言的比较

我校的计算机科学导论课程(以下简称“计科导”)使用Go语言教学,程序设计基础与实验课程(以下简称“程设”)使用C语言或Java语言教学。

这样的方式优点在于严格体现了两门课程对程序设计水平的不同要求:计科导只需要学生对程序设计掌握最基本的概念、思想与流程即可,程设则要求学生掌握并熟练运用特定语言编写程序。

缺点在于:Go语言起点较高,上手颇有难度;由于起点较高颇有难度,很多Go语言的基础知识点避而不谈,甚至连I/O方法(输入/输出方法)都没有讲全;由于Go语言的基础知识点没有讲全,学生对Go语言的认识相当模糊,觉得Go语言学习颇有难度。至此,学生在对Go语言的认识上陷入了恶性循环。

许多其他高等院校的计科导(某些院校使用“计算导论”“计算概论”等相似课程名称,其本质都是相同的)使用C语言教学。优点是起点低,上手快,知识点详细、清晰、透彻;缺点是与C程设的要求差别小,除了结构体很可能不讲,指针有可能不讲,其他都讲!

我们可以看到,在教学安排上,矛盾还是很尖锐的,问题还是很突出的。建议嘛,当然是希望大家对两门课程都有所了解(笑)。

But! 近来发现,即使学会了写程序,许多同学在程序设计语言的书写格式美观方面存在严重问题。

这像程序吗?

这才是程序!

So...是什么造成了这种现象捏?

问题原因:

老师不讲。不知道是老师认为不重要呢,还是老师根本不在意这些细节,或者说,老师自己也不清楚程序书写美观的几个要素?

学生不留心。缺乏观察老师的书写方式,缺乏观察课本的书写方式。

当然如果老师不注意的话那就没办法了……这时候就需要一本优秀的教材!强烈推荐C++ Primer!

(尽管这是一本反人类的书,但是只要你硬着头皮读完了,你会发现其他C和C++的教材才是反人类的)

(能认真读完这本书的非计算机系同学,强烈建议转计算机系)

(最后一点:程序书一定要找最新版本的,这能保证你的思想和语言与时俱进)

代码不美观,后果很严重

问题可能导致的结果:

读者在阅读代码——他人阅读代码或自己重读代码——时感到满心不悦,进而(近乎无意识地)产生对编程的烦躁、厌恶情绪。

小编小编!那你教教我怎么写一个格式美观的程序呗~

书写美观性规则:

一、以英文书写格式为模板。

英文书写格式:

每个单词后一个英文空格;

每个句末标点符紧跟其前一个单词视为一个整体(包括连用)(即句末标点符前无空格后有空格);

每个句首标点符紧跟其后一个单词视为一个整体(包括连用)(即句首标点符前有空格后无空格);

每个句中标点符视为一个单词;

尽可能避免同一个单词换行书写。

二、条件语句块、循环语句块与函数块的缩进问题

条件句不缩进;

执行句均缩进一个缩进单位;

一个缩进单位一般为四个英文空格

三、花括号位置问题

一般推荐花括号单独占一行书写,由语言特性决定的除外。

四、换段与注释问题

为了阅读与修改方便,推荐:

一个模块一段,模块结束空一行(包括最后一个模块);

及时注释,不然别人阅读时或者很久以后自己编辑时要花很大劲才能搞明白某一段是干什么用的;

注释可以逐句解释;或者写在模块前,或者写在模块后,一并解释模块内容;但在整个程序里,模块/语句注释位置应当统一(不要忽前忽后的);

注释符后空一格书写注释内容。

示例:冒泡排序降序

(仅供书写美观角度参考,程序本身不一定采用最优算法)

冒泡排序C

冒泡排序Go

冒泡排序Python

写在最后:

要求书写的程序美观是近乎严苛的标准。初学者可能更在意代码的质量,因此往往忽视美观性。但还是要学会在一次次敲代码的过程中养成这个良好的习惯。

许多代码编辑器/IDE(Integrated Development Environment,集成开发环境)没有排版功能,所以需要自己注意。微软的产品总能在美观度上给用户良好的体验,因此对于既想使自己的代码相当漂亮,又有点懒的程序员,推荐使用Visual Studio 2017 Community(也可以使用前一个版本Visual Studio 2015 Community);只要拥有一个Microsoft账户就可以在官网免费下载并激活;Community说明这是社区版的,很多人喜欢从网上复制一个激活码破解专业版或者企业版,对于这样的做法你开心就好;与一般的编辑器/IDE相比,Visual Studio Code确实功能强大,但代价是磁盘占用空间巨大,所以记得只选你需要的功能,如果不知道需要什么功能赶紧找个大佬卖个萌请教一下;当然如果喜欢用Atom/GNU Emacs/Vim/Xcode/…自然没什么问题,找到最适合你的编辑器和IDE才是最重要的)。

初学者可能喜欢攀比谁的代码行数更少,觉得代码行数少就说明编程水平高。这是错误的观念。程序 = 算法 + 数据结构,程序员应当寻求优化算法与数据结构使程序运行占用的时间与计算资源(空间)更少,而不是代码行数更少。简洁是我们追求的目标,但千万不能牺牲程序本身质量以换取代码简洁。

特别邀稿 | ヴワル魔法図書館

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180709F1NZIB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动