当前位置: 首页 >  软件学堂 >  代码大全-如何建立一个高质量的子程序

代码大全-如何建立一个高质量的子程序

导读:不积硅步,无以至千里;不积小流,无以成江海。大型的项目是由一个个小模块构建而成。每一个小模块里面又包含着许多子程序。如果每一个子程序都能做到高质量,那么整个项目代码的质量必然很高。🤔.建立一个子程序的步骤.《代码大全》这本书将设计程序列为首要步骤。该步骤在我看来就像是为这个程序赋

不积硅步,无以至千里;不积小流,无以成江海。大型的项目是由一个个小模块构建而成。每一个小模块里面又包含着许多子程序。如果每一个子程序都能做到高质量,那么整个项目代码的质量必然很高。🤔

建立一个子程序的步骤

《代码大全》这本书将设计程序列为首要步骤。该步骤在我看来就像是为这个程序赋予特别的意义。整个过程就好像捏泥人,你要去决定他的性别是男是女,头发是卷是直,个子是高是矮等。设计程序的第一步是要求设计者想清楚三个问题。第一该程序要解决什么问题。第二我为什么要设计该程序,设计出该程序带来什么样的好处。第三我该如何设计出一个健壮的、优秀的程序。不难看出,这两个问题都是设计者对自己的一个提问,是为了让设计者明确这个程序的必要性价值和意义。只有前两个问题想通了,才能着手去思考如何设计的问题。

设计并实现一个程序需要考虑哪些步骤?

  • 合适的命名。一个优秀的命名是对程序功能的高度概括。
  • 考虑程序所需的效率。设计程序需要考虑它的运行环境。比如环境对程序执行时间有着高要求,那么考虑一个时间复杂度较小的算法或高效的数据结构是必要的。
  • 考虑合适的算法和数据结构。根据第2条选择合适的算法和数据结构。
  • 编写详细的PDL。
  • 检查PDL。
  • 编码实现PDL。
  • 检查程序编码
  • 纠错并修改
  • 按需重复…

编写PDL到底带来了多大的便利性?

PDL在我看来就是注释,用自然语言描述整个程序的设计过程。编写一个清晰的PDL有以下几个好处:第一方便review。reviewer应该更希望看到你的设计思路,而不是硬看代码,尤其是没有注释的代码,真的让人抓狂。第二方便修改。一旦发现考虑不周的地方,就可以直接用自然语言修改,这样效率更快。第三方便编程。一份精确无误的PDL会为接下来的编程实现提供一个完整的思路,因为PDL本身就是注释,我们仅需要根据注释,填充正确的代码即可。

为什么要花费大量时间在高层次的设计上,而花费少量时间在Coding?

有时候“慢即是快”,将每一步走稳,才能走的远。

花费大量的时间在高层次的设计上会帮助我们明确自己的设计目标,设计思路。拥有一个清晰、明确的设计思路太重要了。尤其是编写PDL、检查PDL、细化PDL步骤,会让我们对自己设计的子程序有一个清晰透彻的理解,如此,之后的编码实现也会更加的准确。

如果上来直接Coding,大概率会返工。一遍遍的将大量的时间花费在调试代码,修改代码步骤上。

一个有效的、富有表达力的PDL该如何描述?

  • 一定是自然语言描述,不要用编程语言描述。你用自然语言描述,实现者看懂思路后,可以用任意语言实现子程序。
  • 要详细且精确。因为PDL未来是要用来程序语言编码的基础,PDL写的越清楚,实现出来的子程序就越准确。建议是在描写一个PDL之前,先用自然语言精确描述子程序的作用,然后再编写关于这个子程序的高层次的PDL。
内容
  • 代码审计工具Fortify基本使用
    代码审计工具Fortify基本使
    2023-12-11
    最近接触到一款代码审计的工具 — Fortify SCA and Applications 22.2.0,现就其基本使用
  • 实例讲解Flink 流处理程序编程模型
    实例讲解Flink 流处理程序编
    2023-12-10
    摘要: 在深入了解 Flink 实时数据处理程序的开发之前,先通过一个简单示例来了解使用 Flink 的 DataStr
  • gitlab ci 集成 eslint/prettier/tsc 做代码审查,并使用 eslint 输出作为显示代码质量
    gitlab ci 集成 esl
    2023-12-09
    前言.想自动化一下公司里代码的部分审查,最初想用 reviewdog 的,但是公司的域名基本都在 VPN 中访问的,gi
  • 产品质量管理利器,华为云发布CodeArts Defect缺陷管理服务
    产品质量管理利器,华为云发布Co
    2023-12-08
    摘要: 近日,华为云CodeArts Defect缺陷管理服务正式上线,提供结构化缺陷跟踪流程和标准化的质量度量模型。.
  • 5.2 基于ROP漏洞挖掘与利用
    5.2 基于ROP漏洞挖掘与利用
    2023-12-07
    通常情况下栈溢出可能造成的后果有两种,一类是本地提权另一类则是远程执行任意命令,通常C/C++并没有提供智能化检查用户输
  • 详解Docker容器运行GUI程序的方法
    详解Docker容器运行GUI程
    2023-12-07
    摘要: 本文为大家详解如何直接进入Docker容器运行或通过SSH连接Docker容器运行GUI程序的方法。.本文分享自
  • 架构师日记-如何写的一手好代码
    架构师日记-如何写的一手好代码
    2023-12-06
    作者:京东零售 刘慧卿.一 前言.在日常工作中,我经常听到部分同学抱怨代码质量问题,潜台词是:“除了自己的代码,其他人写
  • 4.7 x64dbg 应用层的钩子扫描
    4.7 x64dbg 应用层的钩
    2023-12-06
    所谓的应用层钩子(Application-level.hooks)是一种编程技术,它允许应用程序通过在特定事件发生时执行
  • Docker教程1-引言 2-简介 3-安装
    Docker教程1-引言 2-简
    2023-12-03
    1 引言.本章内容:为什么要使用容器、容器有什么作用、在哪里可以使用容器。.1.1 糟糕的过去.应用程序是企业的核心。大
  • 华为云CodeArts Artifact,5大特性守护制品质量与安全
    华为云CodeArts Arti
    2023-12-03
    摘要: 2023年2月23日,华为云CodeArts.Artifact制品仓库服务正式上线,目标进一步赋能企业伙伴与开发
  • SonarQube系列-架构与外部集成
    SonarQube系列-架构与外
    2023-12-02
    介绍.Sonar是一个代码质量管理的开源平台,基于Java开发的,用于管理源代码的质量,通过插件形式,可以支持包括jav
  • 如何在C++程序中借助Windows自带的bitsadmin命令从123云盘(不开通直链或会员)上下载文件
    如何在C++程序中借助Windo
    2023-12-02
    最近,我想发布一个程序,里面想嵌入一些比较大的文件,但是如果直接用资源方式嵌入的话程序的体积就非常大,所以我想用从网上下
  • 4.4 x64dbg 绕过反调试保护机制
    4.4 x64dbg 绕过反调试
    2023-12-02
    在Windows平台下,应用程序为了保护自己不被调试器调试会通过各种方法限制进程调试自身,通常此类反调试技术会限制我们对
  • ***远程监控系*
    ***远程监控系*
    2023-12-16
    ***远程监控系*.产品功能.我们的服务器远程监控系*是一款针对企业服务器管理的智能监控系*。它具有实时监控、远程操作、
  • ***虚拟化解决方案
    ***虚拟化解决方案
    2024-01-05
    ***虚拟化解决方案产品介绍.我们公司自豪地推出了全新的服务器虚拟化解决方案,该产品旨在帮助企业更高效地利用服务器资源,
  • ***硬件
    ***硬件
    2023-12-21
    ***硬件.产品功能.***硬件是一种专门为数据存储和处理而设计的硬件设备。它能够提供稳定可*的存储空间和数据处理能力,
  • 电子元件继电器
    电子元件继电器
    2024-01-10
    电子元件继电器.产品功能.电子元件继电器是一种用于控制电路的开关装置,通过控制电磁吸引力的改变来实现开关的闭合和断开。它
  • 互联网金融服务平台
    互联网金融服务平台
    2024-01-10
    互联网金融服务平台.产品功能.个人理财:用户可以通过平台进行投资理财,选择适合自己的理财产品,实现资金增值。.贷款服务:
  • ***软件
    ***软件
    2023-12-06
    ***软件产品介绍.产品描述.我们的服务器软件是一款高性能、稳定可靠的服务器管理软件,具有强大的功能和灵活的配置,适用于
  • 移动应用开发
    移动应用开发
    2023-12-01
    移动应用开发.产品描述.移动应用开发是一种专注于为移动设备(如智能手机、平板电脑)开发应用程序的技术和流程。这些应用程序
  • 电子元件半导体器件
    电子元件半导体器件
    2023-12-06
    电子元件半导体器件.产品功能.我们的电子元件半导体器件是一种高性能的电子元件,主要用于在电子设备中实现信号放大、整流、稳
  • 电子元件传感器
    电子元件传感器
    2024-01-15
    电子元件传感器.产品功能.电子元件传感器是一种具有高精度和快速响应的传感器,可用于检测温度、湿度、压力等多种物理量,并将
  • 数据分析和挖掘软件
    数据分析和挖掘软件
    2023-12-06
    数据分析和挖掘软件.产品功能.我们的数据分析和挖掘软件提供了丰富的功能,能够帮助用户快速有效地实现数据分析和挖掘,包括数