`

关于写代码的分享

 
阅读更多

1. 写代码的目的

唯一的目的就是解决需求。但是代码的质量体现的是个人工作能力。

如果接受上面的论述,那么请在开工前,确定需求,然后重视代码质量。

所谓确定需求,就是需求描述落到官方文档,且描述不具有二义性。有一个经验:需求描述越冗长,这个需求越有可能是混沌的。所以要警惕这样的需求。

所谓的代码质量:规范性、正确性、高效性、鲁棒性。

  • 代码书写延续规范
  • 程序正确完成需求
  • 程序运转高效
  • 程序能抵御一定的恶意输入,并提示:参数错误,注入攻击,请求攻击,。

 

 

2. coding开始前的准备工作

回顾需求:是否明确。

这部分工作用于预防是否存在需求变更或者需求理解偏差的情况。

 

设计方案:是否能覆盖需求

这部分工作用于预防工作结果无法达成需求的情况。

 

回顾解决流程:是否有流程图

这部分工作用于类似于提笔忘字的情况。好记性不如烂笔头。

 

简化的流程图方案:注释块

简化版的流程图方案,在注释块里标记上代码逻辑的步骤,有利于展开coding工作,也利于后期的维护工作。

 

 

3. 代码的样子

变量控制:

代码应该看起来像是一台机器,一把电笔戳到节点上就可以得到正确与否的结论。我个人的建议是通过一个布尔型的变量来标识流程是否应该继续往下走。

有始有终:

不论是发生什么事情,代码都是可以从第一行一直运行到最后一行。这个地方就代表我们要避免在代码中加入return或者直接对外抛异常的逻辑。避免这种情况,也意味着避免了维护的困难。

以一个controller类的接口方法为例子,他应该是三部分构成,首先是初始化部分,再来是业务逻辑部分,最后是输出部分。

在业务逻辑部分通过一个布尔值的变量flag来控制业务逻辑的行为。如果有异常信息要携带,可以赋值给相应的变量。

当到达输出部分的时候,通过flag来确认是正常输出,还是报错的输出。

 

 

 4. 写代码的坏习惯

4.1 手先动起来

不管三七二十一就开始在键盘上噼里啪啦敲打。然后写到一半,卡壳。盯着屏幕半天不知道写到哪里了。

解决方案:注释块与流程图。

 

4.2   重复的代码逻辑

图方便就复制一份到一个地方。方便的同时,也带来了未来多处修改的隐忧。

解决方案:重复的内部逻辑,提炼为内部方法。重复的外部逻辑,提炼为工具方法。重复使用的内部变量,提炼为内部静态变量,重复使用的外部变量,提炼为全局的静态变量。

 

4.3   随意的命名规则

命名一个变量叫a,未来的某一天,自己都不知道这个a是apple还是amen了。稍好的一种情况是用拼音命名,guanliyuan来代表一个管理员变量。某些工程师甚至会搞中英文结合,比如zongManager表示总经理这样的情况。

解决方案:小驼峰风格的英文变量命名规则。名称+状语来表达完整的意义,比如dateInSystem。动词+名词用来命名方法,比如getValue。

 

4.4 缺席的注释

代码写得飞起之后,不留下任何注释。是为了保护知识产权么?未来的某一天,自己都不知道该程序的用途。

解决方案:最低限度是注释块。高一点的需求,每个程序块(if-else,循环体)在入口处都应该增加注释。

 

4.5  trick

trick是指采用一种不考虑后续维护,只追求快速解决需求或者bug的方法。这种行为会导致后期维护的困难。以引入新问题为代价,解决老问题。

 

举例1:将自定义字段的数据以json形式的字符串放入关系型数据库进行存储的方案。

问题:违背数据库第一范式:字段不可分。导致进行join,字段排序存在困难。

 

举例2:把数据库所有的字段全部返回给前端。

问题:暴露数据库结构,违背数据安全性。

 

举例3:把输入参数以字符串拼接的形式构建SQL语句进行执行。

问题:SQL注入攻击

 

4.6  陷入细节(过度设计)

每个需求总存在一个边界,当边界变得难以覆盖,那么考虑暂时放弃边界是可以接受的。

 

举例:地产开发的拆迁模式:并不等待全部拆迁户都满意的状态就开始施工。

举例:操作系统的鸵鸟算法:经过长期观察,发觉死锁现象的出现概率极低,则认为系统不会出现死锁。

举例:google

 

以上两个例子都是以2-8法则处理问题,不以完美方案为目标,而是覆盖百分之八十的大需求。引用一下《数学之美》里的一个观点,一把AK47,简单结构输出猛烈火力。

 

 

 

分享到:
评论

相关推荐

    ios-swift写的系统的分享代码.zip

    "ios-swift写的系统的分享代码.zip"这个压缩包文件显然包含了使用Swift实现系统分享功能的源代码。系统分享功能允许用户将应用程序内的内容(如文本、图片、链接等)方便地通过已安装的社交应用进行分享,例如微信、...

    写好代码的十个秘诀_微软中国研究院

    微软中国研究院分享了“写好代码的十个秘诀”,旨在帮助开发者提升编码技能,实现更高效、更优雅的编程。以下是对这十个秘诀的详细解读: 1. **明确目标与设计** 编码前应明确功能需求,进行良好的设计,包括模块...

    CANoe写bootloader上位机代码

    有朋友邮件问我如何用CANoe的CAPL读取S19...基于此,我愿和大家一起分享我以前写的代码,不是很完善,敬请大家见谅。有更优化的,请和我分享,谢谢! 我的邮箱:tianhua_ming@126.com 如果回复不是很及时,请谅解!

    最近写的MOEAD的matlab代码分享给大家供学习使用-MOEAD_陈旭编.rar

    最近写的MOEAD的matlab代码分享给大家供学习使用-MOEAD_陈旭编.rar  最近写的MOEA-D的matlab代码,分享给大家供学习使用。    测试函数ZDT系列与DTLZ 系列,参考论文 MOEA/D: A Multiobjective Evolutionary...

    CANoe写bootloader上位机代码.rar

    基于此,我愿和大家一起分享我以前写的代码,不是很完善,敬请大家见谅。有更优化的,请和我分享,谢谢! PS:和这个资源一样,只是原资源要50积分也太多了吧,一般用户根本下载不下来,所以我上传一个。

    java写的连接数据库的代码

    java写的连接数据库的代码,给大家分享一下,直接可以用的

    11种模拟器原代码 .rar_C++_DOS 菜单_代码模拟器_写代码模拟器_游戏模拟器

    4. **写代码模拟器**: 这可能指的是一个用于教育或练习编程的模拟器,它提供了一个虚拟的编程环境,让用户可以在其中编写、测试和运行代码,而无需实际安装和配置完整的开发环境。这样的工具通常会提供错误检查、...

    c# 自己写的分页代码

    本项目中的“c# 自己写的分页代码”是作者自行实现的一个C#分页功能,通过上传分享来赚取积分。下面将详细介绍这个分页程序的相关知识点。 首先,我们要理解分页的基本概念。分页是将大量数据分为多个部分(页)...

    读者与写着源代码+exe文件

    综上所述,这个资源包是一个结合了理论学习和实践操作的工具,旨在帮助用户更好地理解、运行和修改源代码,同时也体现了编程教育和代码分享的理念。用户应利用这个机会深入学习编程语言,理解程序执行的过程,并培养...

    MVC框架源代码(自己系=写的)

    在这个标题为“MVC框架源代码(自己写的)”的压缩包中,我们推测作者分享的是他自己实现的一个JavaScript MVC框架的源代码,这可能是对经典MVC模式的一种个人化实现。 **1. Model(模型)** 模型层是MVC的核心,它...

    写出优雅代码(C#)篇

    【写出优雅代码(C#)篇】探讨的是如何提高C#编程的可读性和维护性,通过遵循一些最佳实践和技巧,使代码更加简洁且优雅。本文由姜敏分享,涉及了多个论题,旨在促进开发者之间的交流和学习。 **论题一:函数越小越好...

    vb写的警用gis代码

    6. 报告生成:警用GIS可能有报告生成功能,VB代码会处理地图截图、数据分析结果,并将其整合到PDF或Word文档中,方便警务人员汇报和分享。 7. 异步处理和多线程:考虑到警务工作的实时性,VB代码可能利用异步处理和...

    平时写的代码概述

    标题“平时写的代码概述”提示我们,这可能是一个关于日常编程工作或个人项目的经验分享。描述中提到的是一个“小程序的详细设计与需求分析”,这意味着我们将深入探讨如何从需求出发,进行软件设计,最终实现代码...

    计算器简单代码分享一哈哈

    代码前,先了解一下Qt5之后版本自带有串口类,之前的Qt版本不自带有串口类,做串口相关界面时主要用到了第三方的类库,但现在Qt自带了,用起来也方便很多, 主要用到QtSerialPort模块中的两个类:一个是QSerialPort...

    x86,x64 汇编代码注入器 C,C++写的

    《x86,x64汇编代码注入器的C/C++实现详解》 在计算机编程领域,代码注入是一种技术,它允许程序将代码插入到另一个正在运行的进程上下文中执行。这种技术通常用于调试、系统监控、性能优化,但也可能被滥用进行恶意...

    delphi 写的BT下载的工具 源代码

    标题中的“delphi 写的BT下载的工具 源代码”表明这是一份使用Delphi编程语言编写的BT(BitTorrent)下载软件的源代码。Delphi是一种基于Object Pascal的集成开发环境,以其高效、易用而受到许多开发者喜爱。BT下载...

    编程助手,将程序员常写的代码进行集成,提高开发效率

    7. **学习与分享**:作为一个开放平台,编程助手鼓励开发者分享自己的代码实践,提供学习交流的场所,促进技术社区的发展。 8. **文档支持**:为每个代码片段提供详细的使用说明和示例,帮助开发者理解其用途和使用...

    C#大小写金额转换代码

    C#大小写金额转换代码,修改了以前代码的漏洞,更完善,不过只能转换到小于1万亿的数字。 分享大家

    金山写作助手 方便写代码的输入法

    9. **社区分享**:金山写作助手还拥有活跃的用户社区,用户可以在这里分享自己的代码片段,学习他人的优秀实践,共同提升编程技能。 10. **持续更新与优化**:作为一款专业的IT工具,金山写作助手会不断进行更新和...

    一些库函数源代码,自己写的,呵呵

    标签“源代码”明确了这是关于原始代码的内容,对于学习C语言或想要深入理解库函数工作原理的开发者来说,源代码是非常有价值的资源。通过阅读和分析源代码,可以提升编程技能,了解最佳实践,并可能发现新的编程...

Global site tag (gtag.js) - Google Analytics