磨刀不误砍柴功——写代码之前的“三板斧”

  • 零、写在前面

我在开始学习编程的时候,其实往往脑子并不需要思考什么内容,特别是浏览网络课程的时候,往往老师敲什么,我就跟着敲什么。

至于为什么那么敲,大概也只是为了演示语法罢了,跟老师打着一样的结果,除非粗心大意,大多数也都会有和老师一样的结果,过后也就不再深究为什么要这么做了。

甚至我还开始期待起了下一个要敲的代码是什么,这个功能又会有什么样的神奇效果。

这便是我对于代码的初印象,大概就是一个编程、运行、调试再运行的过程。甚至有了什么程序需要编写之后,我便有些手痒痒,跃跃欲试。

直到最近,我要在一个较短的时间内,完成一个对于我来说较为复杂的项目。

当我看到任务需求的时候,我就被一一罗列出来的任务概述吸引了。我意识到,单单靠以前的野路子YY出一个程序的可能性不太大。

因此,我也尝试以一次实践为例,粗浅地分析一下,编程之前,我们需要做哪些准备工作

(ps:出于保密原则,我就不将具体的需求放上来了)

 

  • 、将各式的需求分门别类

本次对于程序的需求大约有六七个,而且有的需求依赖于其他需求的实现之上而并不是互相独立地,但是根据C语言的编程思想(面向过程),因此也将打卡机的需求按照流程分为大约4大板块。

即:打卡前期的初始化数据准备、上班打卡、下班打卡以及周报汇总。

 

▲1.思维导图的整体框架

 

划分之后,我的程序设计图景忽然明朗了起来,不再被纸面上的规律不太明显的六七条需求带路线,而是将一个个零零散散的需求都归纳到四个过程当中,然后将这四个过程模块都打包成为一个个要去实现的函数,最后通过main()函数调用这四大步骤的函数就可以实现需求了。

至此初步的粗糙的框架算是搭建好了。

 

  • 二、辨别出每个步骤下需要哪些变量

粗俗地理解,程序大概就是通过设计变量在一定规则之下的互动从而实现一定目的工具。

所以在搭建粗略框架的步骤之后,再将注意力放在了项目的需求上,挨个阅读了一字一句,将里面提到的名词都拿出来斟酌,这个是不是我需要用到的变量。

特别是在标准C语言中,变量的定义并不像C++那般的方便,C语言变量的定义需要放在程序的开头,所以在进行程序撰写之前分析得出需要用到哪些变量对于后续的编写可以起到事半功倍的效果。也不再需要等到需要用到变量才向上进行变量的定义。

 

▲2.“下班打卡”模块需要用到的变量

 

而对于变量本身而言,变量大体上分为两种,一种是全局变量,一种是局部变量。

局部变量(Local Variable):定义在函数内部,作用域仅限于函数内部, 离开该函数后就是无效的,再使用就会报错。

全局变量(Global Variable):定义在所有函数外部,作用域默认是整个程序,也就是所有的源文件,包括 .c 和 .h 文件

于是,在仔细寻找完所有变量之后,继续进行进一步地分析,哪些变量是需要参与到其他过程的,而哪些变量仅仅只是在本过程内有效的。之后,便可以将全局变量单独摘出来。当然也有不定义全局变量的办法,但是全局变量本身也挺容易理解与使用的(起码对于初学者来说是这样的)。

于是,我当初尝试定义一个全局数组,并且规定了数组的每个对应位置所对应的元素的含义。

(现在想想还是定义全局变量更为直观……)。

▲3.打卡机项目中需要用到的全局变量

但是数组也有个比较明显的劣势便是,数组的每个元素的类型都是相同的,因此也并不是特别地方便,除了形式比较一致之外。

 

  • 三、分析每个需求需要的步骤以及规则

其实前面的这些都是基础的铺垫,更加重要的问题便是如何在编写程序之前,把问题彻底理解并理清所有的逻辑判断

一个程序是依靠这些逻辑判断组成的语法骨架最终支撑起来的,因此不妨通过流程图的方式,想清楚最终运行的目标结果是什么?

比如说:从动态的运行的角度来说,这个步骤需要怎样的输出,这些流程会经过哪些关键的节点,会有哪些中间变量,我应该如何储存它、追踪它并且最终展示出我想要的效果。

又比如说:从三大结构的角度来说,实现这些变量流需要使用哪些结构,是顺序、条件还是循环?

以上的分析都不妨通过文字或者思维导图的方式进行一个呈现,这样都会让后续在编译程序的过程当中理清思路。

▲4."下班打卡"模块中需要用到的一些条件判断

 

当然,这些并不是非此即彼的单一结构,有时候需要几大结构互相嵌套起来配合使用,具体情况具体分析。

 

  • 四、写在后面

通过前面三大步骤的分析,这个项目的需求也不再是一盘散沙,而是有了一层层的模块化设计,需要哪些变量,然后怎么去实现也都有了思路,至于具体的技术实现,相信用心也能百度到。

或许到了以后慢慢实践的过程,随着项目难度的一步步加大以及编程技巧的逐渐熟练。对于一个项目来说,大多数的时间可能都是在设计程序框架,考虑程序方案,随后才是像码农一样在码代码来实现实现这些过程。

先磨刀的感觉就好像是在进入森林之前已经通过地图了解了一遍,这样在一头扎进森林的时候不至于迷路而不知所措。

磨刀不误砍柴工,虽然有时候会慢一些,但是往往慢,而坚韧。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值