随笔分类 - 闻缺陷则喜
2021年目标:完成新书《闻缺陷则喜》
判断是否是完全平方数[容易]和排列箱子[容易]
摘要:1.1.1. 完全平方数(PerfectSquare) 判断正整数y是否是完全平方数。如果能找到正整数x,使得x*x==y,则y是平方数。 1. 思路 条件 处理 x*x>y 丢弃右半部分 x*x==y y是完全平方数 x*x<y 丢弃左半部分 x的取值范围是[1,y],我们用左闭右开空间,就是[1
阅读全文
二分查找的讲义和视频
摘要:源码下载: https://pan.baidu.com/s/1wMsUK4hZpdttFzOK66n3mQ?pwd=x7a7 提取码 x7a7 先进入《 视频教程及配套源码》,再进入《C++算法》。 在线看视频: https://www.bilibili.com/video/BV1nL411Q7DY
阅读全文
耦合
摘要:1.1.1. 低耦合 耦合指的两个系统(模块)联系紧密。共7种,除掉无直接耦合和高级语言不存在的内容耦合,共5种。耦合从低到高,分别是:数据耦合、标记耦合、控制耦合、外部耦合、公共耦合。 1. 数据耦合两例 JiSuan(5, 3); CGouMaiXinXi gouMai = new CGouMa
阅读全文
通过简单原理增强软件可靠性
摘要:简单原理,就是字面的意思,系统越简单越好。复杂问题简单化,很难;简单问题复杂化,很容易。 简化问题至少有如下方法:借用、取舍、拆分、分类、分工、模式与学习、规范 。 借用是站在巨人的肩上。“欲穷千里目,更上一层楼”。遇到问题,先不急着动手,先思考、查阅记录,看以前是否遇到相同或接近的问题,直接复用或
阅读全文
复制文件夹需要考虑的问题
摘要:完成一个函数复制文件夹,将源文件夹(strSrcDir)的文件复制到目标文件夹(strDestDir)。为了简化问题,限定如下:一,如果参数错误,可以崩溃,但不能损坏源文件。简单实现:依次复制各文件,如果目标文件存在,则先删除。这个实现有个严重的缺陷但触发几率低的缺陷。当源文件夹和目标文件夹相同时,
阅读全文
[闻缺陷则喜]关于boost的想法
摘要:公司有个大约2万行的项目,用到了boost,我想取消掉不用boost。理由:一,可理解性差,除了高手很难弄懂。二,类太多,光头文件就1万多。大点的团队四五个高手,每人用一个boost类。高手流失后,很难补充,因为候选人不知道需要熟悉那五个类。我同学,一入职就接手一个boost用得多的项目,不到3个月
阅读全文
公共库开发组
摘要:其它开发组是基础库开发组的用户,上级是基础库开发组的客户。基础库开发组和其它开发组不是协作关系,因为其它开发组的成果不影响基础库开发组的质量。 推动基础类库,而不是拉动基础类库。拉动基础类库,至少会有如下几个问题: 一,没人能100%正确,我自然也是。 二,就算我是正确的,我和使用者的思维不一定是同
阅读全文
[闻缺陷则喜]编码与实现
摘要:人类记忆字母、数字、汉字、符号需要记住读音或笔顺;计算机制只需要记录编号。 1.1 ASCII码 文本编码方式的基础是ASCII码,它是一个7位的编码标准,包括26个小写字母、26个大写字母、10个数字、32个符号、33个控制代码和一个空格,共128个代码。其中ASCII码是大多数常用编码的基础。
阅读全文
测试其它 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 为什么要测试 微软数据:缺陷发现得越早,花费的时间越少。单元测试:3.25小时;集成测试:6.25小时;系统测试:11.5小时;域测试:11小时。 下图节选自《单元测试的艺术》 1.2 阶段 单元测试是对软件组成单元进行测试。测试人员:白盒测试工程师或开发工程师。将程序模块采用适当的集成策略
阅读全文
单元测试 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 单元测试 1.1.1 单元测试用例设计 功能测试的用例设计是业务功能逻辑的输入输出,单元测试中就是函数的输入输出,那么单元测试中的输入输出有哪些呢? 输入: 被测试函数的输入参数 被测试函数需要的全局变量 被测试函数的内部私有变量 函数内部调用子函数的数据 函数内部调用其他模块的数据 函数内
阅读全文
概要设计 其它 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 反模式 反模式是指在对经常面对的问题经常使用的低效、不良或者有待优化的设计思想、方法。如: 软件膨胀:随着版本的升级,软件越来越消耗系统资源。 反抽象:需要的功能并不暴露给用户,导致用户要在较高层次重新实现一些功能。 万能类︰在一个类的设计中,聚集了太多的函数。 硬编码(Hard Code)
阅读全文
设计模式 选自《闻缺陷则喜》此书可免费下载
摘要:口诀,方便记忆而已: 抽工单建原 桥代理组合适配器,享元装饰外观 访问者写好策略备忘录,观察模板迭代的状态,命令中介解释责任链。 设计模式很多,GOF就列出23种,本文仅举三例。 1.1.1 工厂方法 定义一个用于创建对象的接口,让子类决定实例化哪一个类。自定义一个消息框,最初只能设置标题和内容。后
阅读全文
设计模式六大原则 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 设计模式六大原则 单一职责原则 Single Responsibility Principle,开闭原则 Open-Closed Principle 里氏代换原则 Liskov Substitution Principle迪米特法Law of Demeter接口隔离原则Interface S
阅读全文
架构模式 节选自《闻缺陷则喜》(此书可免费下载)
摘要:架构模式很多,仅举三例。 1.1.1 分层架构 经典三层架构最优场景,数据库管理软件(增删查改),大部分企业软件都是这类。经典三层架构自顶向下由用户界面层、业务逻辑层与数据访问层组成。《领域驱动设计》中的分层架构:用户界面层、应用层(给调用者提供完整的业务用例)、领域层、基础设施层。 分层依据:一,
阅读全文
架构内容 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 架构内容 1.1.1 取舍 质量、工期与成本三者之间是相互影响、相互制约。质量与工期影响着成本。成本又约束着质量和工期,工期影响着质量的提高。反过来质量的提高又促进了工期的缩短。让公司亏钱是最大的罪过;工期的长短严重影响现金流,暂时亏损可以拉投资,没现金流公司会倒闭。 体会:一,有时,要求高
阅读全文
沟通 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1.1 签单前和用户沟通 一,质量要求需要方便测量,以避免以后产生纠纷。比如:程序不容易崩溃,就不好测量。可以改成:a,平均一天崩溃一次。b,崩溃时不损坏数据。c,崩溃后重启可以解决问题,且重启过程不超过5分钟。二,提供多个不同收费的质量要求,供用户选择,防止提不合理要求。比如:平均一周崩溃一次
阅读全文
开发期质量 节选自《闻缺陷则喜》(此书可免费下载)
摘要:1.1 开发期质量 1.1.1 可理解性 一,尽量使用成熟的技术、方法,除非优势非常大。新技术要花时间学习,新方法要详细斟酌、测试。二,分析、设计时消除偶发复杂性、简化根本复杂性。三,除小函数的局部变量外,变量和函数命名要符合规范。四,单一职责原则,一个函数、一个类、一个模块、一个项目只完成一个任务
阅读全文
问题定义 模式
摘要:1.1.1 商业模式 一,价值主张,帮用户解决什么问题。二,客户细分,谁是我们最重要的客户。三,核心资源,需要什么核心资源可以保证商业行为的执行和落实。四,关键业务。那些关键性的事情才能使产品正常运行。五,渠道通路,用什么方式和途径接触用户。六,客户关系,什么方式保证产品和用户拥有长期利益。七,需要
阅读全文
用户细分
摘要:1.1 用户细分 1.1.1 常见分类规则 基础属性,如:年龄、性别、身高、体重、民族、教育、职业、地理位置、城市规模、气候状态、人口密度、渠道来源。 社会关系:家庭、社区、学校、公司、兴趣部落。 消费能力:月收入、月支出、贷款、信用卡。 行为特征:设备类型、使用频率、使用偏好、使用时长、经常团购、
阅读全文
过滤概念(可行性分析)
摘要:过滤概念(可行性分析) 可行性分析事关重大,所以选取多个版本,供参考。每个版本,我都根据我自己的累积加以修改、简化,所以和原版有一定出入。 可行性分析(科教书版) 一,投资必要性。项目是有价值的。二,技术可行性。设计技术方案和几套备选方案,并作出评价选择。三,经济可行性,成本可以接受或利润大于成本,
阅读全文