首页 > 编程语言 >编程原理

编程原理

时间:2023-03-28 11:07:47浏览次数:21  
标签:-- 解决方案 编程 模块化 TDD 算法 设计 原理


编程原理

一、问题求解
1、问题求解(Problem Solving):指描述问题,以及开发计算机程序来解决问题的整个过程。
这个过程经历多个阶段,包括理解待解决问题、设计概念化解决方案,以及用计算机程序实现解决方案。
2、解决方案(solution)通常由“算法”和“数据存储方式”两部分组成。
“算法”是对于在有限时间内问题求解方法的分布描述。算法常执行的操作是在数据集合上进行的。
3、在构建解决方案时,必须组织数据集合,从而按算法要求的方式简单地操作数据。
二、软件的生命周期
软件生命周期(software's life cycles):该过程以初始规划起,经历程序编写和调试,最后修改和增强。
描述-->设计-->风险分析-->验证-->编码-->测试-->完善-->生产-->维护
以“文档记录”为核心。
三、优秀解决方案的定义
要评估一个好的解决方案,必须考虑开发解决方案的各阶段,以及在编写出实现解决方案的原始程序后的各阶段。
这些阶段都需要考虑成本。解决方案的总成本必须考虑开发、完善、编码、调试和测试人员的时间价值,以及维护、修改和扩展软件的成本。
如果一个解决方案在生命周期所有阶段引发的总成本最低,则这个方案就是一个“好”的解决方案。
时代的发展摒弃了“效率最高的解决方案一定最优”的观念。
解决方案的成本应看作是多元成本。
四、模块化设计
1、抽象和信息隐藏
“抽象”分离模块的功能和实现;模块化和抽象相辅相成。
模块化将解决方案分解为若干各模块;抽象在用编程语言实现模块前明确指定各个模块。
信息隐藏限制了处理方法和数据所需要的方式。
2、面向对象的设计
1)封装:对象组合数据和操作;
2)继承:累可从其它类继承属性;
3)多态:对象可在执行时确定适当操作。
3、自上而下的设计(top-down design,TDD):在逐级下降的明细级别完成任务。
4、一般设计原则
1)同时使用OOD和TDD,生成模块化的解决方案;
2)为主要设计数据的问题使用OOD;
3)使用TDD,为对象操作设计算法;
4)使用TDD,为强调算法的问题设计解决方案;
5)在设计ADT和算法时,侧重“做什么”,而不是“如何做”;
6)考虑将前面编写的软件组合包含到设计方案中。
五、关键编程问题
有六点:
1)模块化;
2)可修改;
3)易用;
4)防故障编程;
5)风格;
6)调试。
六、总结
1)循环不变式是一个算法属性,在循环每次迭代前后为true。
2)在评估解决方案质量时,必须考虑各组因素:解决方案的正确性、效率、进入开发的时间、易用性及修改和扩展成本。
3)面向对象与自上而下设计技术相辅相成,相互促进,生成了模块化解决方案。
4)要谨慎设计,尽量提高最终解决方案的可修改性。
5)方法要尽可能独立,并执行一个意义明确的任务。
6)方法一定要包含初始注释,声明方法的作用、初始条件和结束条件。
7)程序应尽可能预防故障的发生。
8)已有诊断工具的有效使用是调试的一个关键。
9)为便于在调试时分析数组和其它更复杂数据结构的内容,应编写转储方法来显示数据结构的内容。

 

标签:--,解决方案,编程,模块化,TDD,算法,设计,原理
From: https://blog.51cto.com/prettycms/6154219

相关文章

  • let 运行原理
    1.servlet的工作过程以及容器的作用Servlet没有main()方法,他们受控与另外一个java应用,这个java应用称为容器(Container)。Tomcat就是这么一个容器,web服务器应用(如Apache)......
  • SpringBoot 整合AOP(面向切面编程)其中@Around失效问题
    1.AOP实现知识点​核心思想:动态代理。​支持技术:反射。2.官方文档名词解释​Aspect(切面):关注点的模块化(新增业务的模块化)。为完成新业务而编写的类对象。(带@Aspect注解......
  • Linux进程编程实例详解
    我们都知道Linux是一个多任务的系统,它可以支持高并发执行任务。可以通过pstree命令查看树状的进程图。代码1#include<stdio.h>#include<unistd.h>//这个包里面有g......
  • 并发编程的优缺点
    为什么要使用并发编程(并发编程的优点)充分利用多核CPU的计算能力方便进行业务拆分,提升系统并发能力和性能并发编程的缺点并发编程的目的就是为了能提高程序的执行效率......
  • 超详细【入门精讲】数据仓库原理&实战 一步一步搭建数据仓库 内附相应实验代码和镜像
    超详细【入门精讲】数据仓库原理&实战一步一步搭建数据仓库内附相应实验代码和镜像数据和脚本感谢B站UP主哈喽鹏程!!!目录0.B站课程链接和搭建数据仓库资源下载1.环......
  • Aop原理
    AOP相关的概念1)Aspect:切面,切入系统的一个切面。比如事务管理是一个切面,权限管理也是一个切面。2)Joinpoint:连接点,也就是可以进行横向切入的位置。3)Advice:通知,切面在某个......
  • C语言之PTA刷题(基础编程题目集_函数题)
    本题要求实现一个函数,对给定的正整数N,打印从1到N的全部正整数。#include<stdio.h>voidPrintN(intN);intmain(){intN;scanf("%d",&N);Pr......
  • Python基本知识(编程语言、数据类型、变量与常量、运算符、格式化输出以及解释器)
    什么是编程语言?编程语言是人类与计算机之间交流的媒介,如Python、go、Java、c语言等等。什么是编程?程序员将自己的逻辑和想法用计算机能够读懂的语言写下来的过程。编程......
  • 使用copilot生成vue响应式原理
    //生成vue的响应式原理functiondefineReactive(obj,key,val){//递归observe(val);//创建Dep实例constdep=newDep();Object.defineProperty(obj......
  • Exp3-免杀原理
    基础问题回答(1)杀软是如何检测出恶意代码的?根据特征码检测:就是恶意代码都有一些特征数据,也就是特征码,这些特征数据存储在AV厂商的特征库中。如果一个文件被检测出他的某......