概要设计 其它 节选自《闻缺陷则喜》(此书可免费下载)

简介: 概要设计 其它 节选自《闻缺陷则喜》(此书可免费下载)

反模式

反模式是指在对经常面对的问题经常使用的低效、不良或者有待优化的设计思想、方法。如:


软件膨胀:随着版本的升级,软件越来越消耗系统资源。


反抽象:需要的功能并不暴露给用户,导致用户要在较高层次重新实现一些功能。


万能类︰在一个类的设计中,聚集了太多的函数。


硬编码(Hard Code):或称写死。在实现某系统用途上设死该系统的运作环境。


超布尔逻辑︰不必要的比较,或是过于抽象的布尔计算。


剪贴编程(Copy-n-paste programming):宁愿拷贝(并修改)现存代码而非创造通用的解决方案


模块划分、公共数据、资源设计、接口

设计模式就是这方面的总结。


界面设计

界面设计可以提前发现需求理解错误,如果界面重要,有专门的UI设计师。


数据存储设计

可存数据库、二进制文件、文本文件、json文件、xml文件。


范式

1NF的定义为:符合1NF的关系中的每个属性都不可再分。关系数据库一定符合第一范式。2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖(函数依赖但不是完全函数依赖)。3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。函数依赖:不存在任意两条记录,它们在X属性(或属性组)上的值相同,而在Y属性上的值不同。完全函数依赖在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ’ → Y 不成立,那么我们称 Y 对于 X 完全函数依赖。设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K,那么我们称 K 为候选码,简称为码。包含在任何一个码中的属性称为主属性。


工时预估与工作计划

工时估计没准确的公式,教科书上说误差30%以内,我的经验是预留50%的时间,其中一半机动,一半次要任务。我的估算方法:拆分成子任务,每个任务的粒度大约4到16小时,然后分别估算工时。完成后,再对照看误差的原因在那,我的经验常见原因:


中途发现某个技术细节可以用新方案,然后去研究。


需求或设计有大问题,从头重来。


有新内容,需要研究排除陷阱。


代码走查

程序员相互查看代码看是否有错误。每个人都有自己的盲点和敏感点,对敏感点效率十倍,对盲点效率一成。除了提前发现缺陷,还有如下好处:


提升代码的可读性、可修改性、可复用性、可扩展性、可移植性,统一的编码风格。


通过展示自己的优秀代码和设计思路,提升个人成就感。


促进沟通能力。


有利于知识共享,避免单点故障,也可增进成员水平。“教”是最好的“学”。


相关文章
|
Oracle 关系型数据库 流计算
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
Flink CDC不支持直接连接到Oracle ADG备库进行数据同步
557 1
|
Python
项目依赖的python包requirements.txt文件的生成与安装
项目依赖的python包requirements.txt文件的生成与安装
1166 0
|
Dart 安全 编译器
Flutter结合鸿蒙next 中数据类型转换的高级用法:dynamic 类型与其他类型的转换解析
在 Flutter 开发中,`dynamic` 类型提供了灵活性,但也带来了类型安全性问题。本文深入探讨 `dynamic` 类型及其与其他类型的转换,介绍如何使用 `as` 关键字、`is` 操作符和 `whereType<T>()` 方法进行类型转换,并提供最佳实践,包括避免过度使用 `dynamic`、使用 Null Safety 和异常处理,帮助开发者提高代码的可读性和可维护性。
417 1
|
存储 供应链 数据挖掘
RDBMS技术有哪些应用场景
【10月更文挑战第21】RDBMS技术有哪些应用场景
378 2
|
消息中间件 存储 运维
|
存储 人工智能 物联网
来聊聊我最近在阿里云的云应用开发平台(CAP)上的体验
来聊聊我最近在阿里云的云应用开发平台(CAP)上的体验
251 1
|
Web App开发 前端开发 JavaScript
React性能优化指南:打造流畅的用户体验
React性能优化指南:打造流畅的用户体验
|
12月前
|
数据采集 存储 监控
Java爬虫:数据采集的强大工具
在数据驱动的时代,Java爬虫技术凭借其强大的功能和灵活性,成为企业获取市场信息、用户行为及竞争情报的关键工具。本文详细介绍了Java爬虫的工作原理、应用场景、构建方法及其重要性,强调了在合法合规的前提下,如何有效利用Java爬虫技术为企业决策提供支持。
|
11月前
|
XML JSON 前端开发
一文带你了解 Flutter dio封装
一文带你了解 Flutter dio封装
1648 1
|
Java 调度 Spring
SpringBoot多个@Scheduled注解的方法,会阻塞吗
【6月更文挑战第9天】SpringBoot多个@Scheduled注解的方法,会阻塞吗
1506 5