软件设计方法
文章平均质量分 76
_张鹏鹏_
嵌入式开发,C++后端开发,通信协议软件开发
展开
-
第一颗子弹
软件不软的一个主要原因,是其经常处于变化之中。所以,当策略分离不同的变化方向被提出后,一个随之而来的问题也就产生了:何时分离?尽管一个软件已经满足了当前所有需求,作为富有经验,伤痕累累的程序员,我们却毫无喜悦,因为我们很清楚,事情还远未结束:用不了多久,新需求就会再次排山倒海般涌来。而当前设计能否顶得住下一波的冲击,没有人心里有底。怀着不安的心情,我们打开IDE,调出代码,翻页跳转,试图从字里行间揣测未来变化的可能性。可深究起来,几乎每一行代码,每一项知识都似乎存在变化的可能性。但如果把每一种可能的变化转载 2022-03-04 15:08:28 · 133 阅读 · 0 评论 -
基于对象和面向对象风格
基于对象和面向对象风格这种叫法来源于陈硕的<<Linux 多线程服务端编程:使用 muduo C++ 网络库>>一书。其具体含义如下:基于对象风格:具体类加全局函数的设计风格。面向对象风格:使用继承和多态的设计风格。作者认为对于应用程序,不宜使用过多的继承,设计过于复杂的继承体系。框架可以考虑使用面向对象风格。以下例子来源于github,本文基本搬移:用面向对象的方法封装一个Thread类一、实现首先定义一个基础的Thread类:Thread.h:#ifndef原创 2022-03-04 14:33:45 · 243 阅读 · 0 评论 -
Go语言面向对象之旅
目的:通过一道题目体验下Go语言下的OO编程范式。题目:模拟人和机器人制造产品。这里人和机器人在工作时都是一名worker(扮演的角色),工作的流程是一样的:如果能量没有消耗完,那么可以继续制造产品,否则停工。区别在于依赖的能量消耗和获取方式不同:人制造产品会消耗吃饭得到的能量,缺乏能量后需要再吃饭补充。人吃完饭后能量值为10,每生产一件产品,消耗能量值为1,吃完饭后能量恢复到10。机器人制造产品会消耗电能,缺乏能量后需要再充电,充完电可以继续工作。充完电后能量值为100,每生产一件产品,消原创 2022-02-24 08:41:19 · 246 阅读 · 0 评论 -
一次正交设计之旅
文章来自于刘光聪,实践了一把,觉得在代码设计上自己有如下收益:多级容器封装;分离变化方向;依赖于稳定;C++私有继承堪称C++的必杀技之一。原文章里面代码有编译错误,这里重新整理了一下,方便大家看。重构的思路可以看原文章:一次正交设计之旅重构前的代码:static vector<vector<int>> getFlaggedCells(vector<vector<int>>& board){ vector<vector<原创 2022-02-24 08:40:41 · 147 阅读 · 0 评论 -
类之间的关系
类的关系:介绍几种常见的类与类之间的关系:继承、实现、组合、聚合、依赖。这里的关系都是语义上的,和语言没有关系。支持面向对象的语言通过代码表达这些关系时有不同的形式(惯用法)。这里主要总结下C++下的实现。继承(Generalization):继承又称为泛化,继承是面向对象的三大特征之一,是一种最能体现面向对象代码复用的类关系。C++的继承是从语法上讲的,是语法特性,类和类之间的继承关系是从语义上讲的,所以这两个继承不是同一个东西。在如下情况下可以考虑使用C++的继承特性:代码复用;实原创 2022-02-24 08:28:52 · 265 阅读 · 0 评论 -
DDD,微服务,容器
微服务大概是这个意思:传统的大块软件要划分成比较小的、可独立运行的模块;每个服务模块可以用不同的语言去实现(polyglot);模块之间仅仅通过服务接口和消息队列互相耦合,其他对接方式基本没有;它们很容易被替代(Design for replacement),因而有利于整体系统的持续演化;杜绝微服务之间共享数据库,各管各的数据,传统应用中动不动就是几十、上百张的表,是不能接受的;每个微服务模...转载 2018-08-08 13:40:09 · 421 阅读 · 0 评论