软件工程基础——程序设计方法与风格

在日常学习方面与我爸产生了一些分歧。最后的妥协结果是C语言游戏开发先咕几天。

从该部分起学习程序设计基础。

该部分以程序设计方法与风格为主。

程序设计方法与风格

程序设计方法和技术的发展,主要经过了结构化程序设计和面向对象的程序设计阶段。

程序设计风格,其实就是我们常说的代码风格,也是很重要的。它直接影响到软件的质量和可维护性,良好的程序设计风格有利于代码的维护。一般来说,程序设计风格是指编写程序时所表现出的特点,习惯和逻辑思路。编写代码时最好要简明清晰,通俗易懂。“清晰第一,效率第二”的特点已成为当今主导的程序设计风格。

我说句实话,我在这方面做的不是很好。我的代码通常可维护性不是很强。由于我注释随缘加,所以当我要去维护我之前写的代码时,我极有可能会多花一些时间去理解我之前写的代码……

说几个需要注意的因素。有则改之,无则加勉。

1.源程序文档化

首先是符号名的命名,包括但不限于变量名,文件名等符号名的命名。此类命名必须要有一定的实际含义,以便于对程序功能的理解。

其次是注释。正确的注释有利于他人理解程序。注释一般分为序言性注释和功能性注释。序言性注释位于代码的开头部分,它给出程序的整体说明,主要描述内容可以包括:程序标题,功能说明,主要算法,接口说明,程序位置,开发简历,程序设计者,复审者,复审日期,修改日期等……

功能性的注释的位置一般嵌在源程序体之中。主要描述其后的语句或程序会做什么。

为了使程序的结构一目了然,可以在程序中利用空格,空行,缩进等操作使程序结构清晰。

我是直接因为OI带下来的坏习惯……很多的东西我都没有写到位。

2.数据说明的方法。

鉴于程序理解、阅读和维护的需要,使数据说明次序固定,可以使数据的属性容易查找,也有利于测试,排错和维护。当一个说明语句说明多个变量时,变量按照字典序排序为好。同时,在说明复杂的数据结构时,可以根据需要加上一些注释。

3.语句的结构

程序应该简单易懂,语句构造应该简单直接,不应为了提高效率而把语句复杂化。一般应注意:

一行只能写一条语句

(有没有压行压出习惯的人呀)

程序编写应该优先考虑可读性

(写了代码是给人看的,人看不懂的代码又有什么意义呢)

除非对效率有特殊要求,否则应该做到清晰第一,效率第二

(完全赞同……以前在洛谷和codevs看题解,个别的代码真的是……唉)

首先要保证程序正确,然后再考虑提高性能

(先写O(跑得过),再写O(跑得快))

尽量避免因使用临时变量而使程序的可读性下降。

(反正我很难做到)

尽量避免不必要的转移

(emmmm……数据的大规模转移还是很费时间的)

尽量使用库函数

(反正我造不出更好的轮子,给你的库函数大部分都是很有效率的)

尽量避免采用复杂的条件语句

(感受 if (((ball_y + radius >= bar_top) && (ball_y + radius < bar_bottom - bar_high / 3)) || ((ball_y - radius <= bar_bottom) && (ball_y - radius > bar_top - bar_high / 3)))
的恐惧)

尽量减少使用“否定”条件的条件语句

(绕来绕去真的会绕进去)

数据结构要有利于简化程序

(要是不用来简化你写他干啥……)

尽量使程序模块化,每个模块的功能尽可能单一化

(其实就是不要让你的各种模块互相干扰)

利用信息隐蔽,确保每一个模块的独立性

(还是为了防止互相干扰)

从数据出发去构造程序。

(面向数据编程)

尽量不要去尝试修补有bug的程序,有必要的话需要进行重构。

(请叫我重构狂魔)

4.输入和输出

用户直接关心的就是程序的输入和输出。程序使用的输入和输出的方式应该尽可能方便用户的使用,要让程序变得对用户友好一些。无论是批处理的输入输出方式,还是交互式的输入和输出方式,在设计和编程时都应该考虑如下原则:

对所有的输入数据都要检验数据的合法性

说到这里我想到一个笑话:

一个测试工程师走进一家酒吧,要了一杯啤酒
一个测试工程师走进一家酒吧,要了一杯咖啡
一个测试工程师走进一家酒吧,要了0.7杯啤酒
一个测试工程师走进一家酒吧,要了-1杯啤酒
一个测试工程师走进一家酒吧,要了2^32杯啤酒
一个测试工程师走进一家酒吧,要了一杯洗脚水
一个测试工程师走进一家酒吧,要了一杯蜥蜴
一个测试工程师走进一家酒吧,要了一份[email protected]!&*(@
一个测试工程师走进一家酒吧,什么也没要
一个测试工程师走进一家酒吧,又走出去又从窗户进来又从后门出去从下水道钻进来
一个测试工程师走进一家酒吧,又走出去又进来又出去又进来又出去,最后在外面把老板打了一顿
一个测试工程师走进一
一个测试工程师走进一家酒吧,要了一杯烫烫烫的锟斤拷
一个测试工程师走进一家酒吧,要了NaN杯Null
1T测试工程师冲进一家酒吧,要了500T啤酒咖啡洗脚水野猫狼牙棒奶茶
1T测试工程师把酒吧拆了
一个测试工程师化装成老板走进一家酒吧,要了500杯啤酒并且不付钱
一万个测试工程师在酒吧门外呼啸而过
一个测试工程师走进一家酒吧,要了一杯啤酒’;DROP TABLE 酒吧
测试工程师们满意地离开了酒吧。然后一名顾客点了一份炒饭,酒吧炸了
——————————————————————————————————————————————————————
原作者是今日飞雪,来源于知乎
链接:https://www.zhihu.com/question/20034686/answer/52063718

这个笑话其实就说明了,程序应该要在面对不同的输入情况下都能有正常的反应,不然真的要等到交到用户手里才会炸掉(

检查输入项的各种重要组合的合理性

理由同上。

输入格式要简单,以使得输入的步骤和操作尽可能简单

这主要也是牵扯到程序的友好性。用户并不是专业人员,在设置输入的时候要尽量避免一些用户了解不到的问题。

输入数据时,应允许使用自由格式

理由同上。不能给用户白添麻烦。

应允许缺省值

其实就是默认值。当某些参数用户没有给出确定值时,程序应该自动给出一个默认值。

输入一批数据时,最好使用输入结束标志

这是个好习惯。

在以交互式输入/输出方式进行输入时,要在屏幕上用提示符明确提示输入的请求,同时在数据的输入过程中和输入结束时,要给出明确的信息。

一切还是为了程序的友好性。

当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性,给所有的输出加上注释,并设计输出报表格式

emmmmmmmm。。。。。。。。。

打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2018-2020 Shawn Zhou
  • Powered by Hexo Theme Ayer
  • PV: UV:

感谢打赏~

支付宝
微信