写代码的流程是,分析需求 -> 确定需要实现的功能 -> 确定数据结构 -> 代码实现
一个软件的应用的组成,可分为:代码,代码文件,目录
代码,分别是:变量,条件语句,循环,逻辑。
代码文件,是根据具体情境,及相关的任务逻辑,还有一些优秀代码组织规则,还有某些结构组织方式。从而组织成为一个个代码文件。
目录,目的出现是为了更好的将文件进行归类管理。
代码实现,就涉及到程式设计。
代码实现,需要注意哪些代码习惯?
开发,一定要意识到,写代码不是第一步要做的事。写代码不是第一步,写代码不是第一步。
写代码前面的第一步,是梳理逻辑。我们要实现一个功能,究竟会有哪些逻辑。
当你意识到逻辑时,这就已经开始了『代码程式设计』。
逻辑,也是有区分的,并不是单一的。
逻辑,它是有分公共的。
公共的逻辑
例如:
1、单入口的架构中,安全工作是放在前面,作为公共的逻辑来处理。
2、用户的登录、退出、注销,这是涉及到用户系统的功能模块部分,需共同用到的。这也可作为公共逻辑。
以上这两点,只是具体业务中的公共逻辑。
公共逻辑,进行细化,可以有架构代码执行的公共逻辑。以 PHP MVC 框架为案例,Laravel 框架中的模板调用,就是架构中的代码执行公共逻辑。
说了那么,一大堆逻辑,为了就是说明程序设计中,逻辑是非常的重要。
写代码之前,一定要思考,再动手。
代码实现过程,注意事项:
1、写注释
当然好的代码是不需要注释。
为什么好的代码需要注释? 因为好的代码通常的通俗易懂的,所以根本就不需要注释。
但是,要想到达不需要注释的代码,这很难。主要的一点就是,每个人的背景知识都是不一样的。开发团队成员,都是背景各异,写注释就是一个非常好的代码习惯。
注释要写好,要怎么写呢?
好注释的标准,简单明了、易懂
以一个封装函数为例
(1) 说明代码的具体作用
(2) 使用的参数说明,包括参数的格式
(3) 返回值说明
/*===============================================
Function: _check_timeout
Purpose: checks whether timeout has occurred
Input: $fp file pointer
==============================================*/
function _check_timeout($fp)
{
if ($this->read_timeout > 0) {
$fp_status = socket_get_status($fp);
if ($fp_status["timed_out"]) {
$this->timed_out = true;
return true;
}
}
return false;
}
2、变量名称
变量,以存储的数据分类,可以分为:简单数据格式,如:字符串、数字;复杂数据格式,如:对象、数组;特殊数据类型,如:资源
变量名,一定要使用表达数据意思的名称,如:存放人名的变量,使用变量名为 $name;存放年龄的,使用 $age 等。
变量名一定要遵守原则:表达数据意思的名词。可能每个人的词汇积累不一样,所以最好平常多积累。
使用通俗易懂的名词,就以权限作为案例,表达权限意思的单词就有 authority, privilege, permission,power。你就可以选择一个通常的,如:authority,priviliege
要表达复合的名词,如:子菜单,可以使用 submenu。
建议了解常用英语词汇前缀、后缀,附上一篇别人的总结:https://www.douban.com/note/311886019/
3、条件判断
使用尽量少的 if...else 语句
如何减少使用 if...else 等条件判断呢?
第一:清晰的逻辑,可以减少不必要的条件判断逻辑;
第二:使用三元运算符 ? :;
第三:使用 PHP 内置函数 isset(), is_string, is_bool();
第四:注意不要使用嵌套条件判断;
第五:可以通过前置设置,减少 else 判断分支;
第六:继续补充完善
4、循环语句
循环语句,针对的就是重复性任务、大数据集合。
循环使用注意要点:
(1)一定要少嵌套,一定要控制不能超过 3 层。
(2)可以串行的循环嵌套,就不要嵌套循环。
(3)循环选取符合条件的数据后,可以使用 break, continue 跳出,就是用。
(4) 把循环需要用到的条件,都在循环语句前先做。
如: $length = count($data) 代替 for($i = 0; $i < count($data); $i++) { ....}
(5)清楚理解 for, while, do-while, foreach 异同。
(6)可以使用 PHP 内置函数解决的循环问题,就是要用内置函数,如:array_map() 等。
5、代码排版
处理同一逻辑过程的代码,聚合在一块。不是说所有的变量声明,都是非要放置在开头的!!!
6、函数封装
凡是出现两次以上的代码处理逻辑,都可以封装函数。
函数封装原则:
(1)函数名称
(2)参数,默认值参数,放在必需参数后面
(3)函数代码不要超过 30 行,以尽量少的行数为原则
(4)函数的返回出口,一定要少,最好做到只有一个 return
7、代码文件
代码文件,遵循相同的归类一起原则。
8、软件开发范式与代码设计模式
选择合适的范式,预估应用的发展,为后面的迭代升级,提供充分的拓展空间。
设计模式
为了降低耦合度,提高可维护性,可阅读性,降低 debug 的难度,减少复合 bug 出现,这是必须的。
良好的程式设计习惯有哪些?欢迎你的补充!