设计模式全家桶

前言:笔者在最初写程序的时候,常会遇到一些状况。 例如:更改一个字段或者添加一种小功能,就要把原来写过的东西废弃,重新大量更改以前写过的代码; 回顾很久以前编写的代码,完全找不到当时为什么这么写的原因 …

Read more

HybridCLR调研

HybridCLR简介 官方链接:https://hybridclr.doc.code-philosophy.com HybridCLR是 Code Philosophy(代码哲学) 公司的代表作品, …

Read more

语义化版本 2.0.0

摘录自:https://semver.org/lang/zh-CN/ 摘要 版本格式:主版本号(MAJOR).次版本号(MINOR).修订号(PATCH),版本号递增规则如下: 给定版本号MAJOR. …

Read more

需求工程

软件系统是指用户对系统在功能、行为、性能、设计约束等方面的期望。 需求获取 需求分析——SA DFD STD E-R图 OOA——类的分类 UML(统一建模语言):平台无关、语言无关 OOA——UML …

Read more

逆向工程

实现级:包括程序的抽象语法树、符号表、过程的设计表示。 结构级:包括反馈程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构。 功能级:包括反映程序段功能级程序段之间关系的信息,例如数据 …

Read more

敏捷方法

传统结构化方法和敏捷方法特点 四大价值观 沟通【加强面对面沟通】 简单【不过度设计】 反馈【及时反馈】 勇气【接受变更的勇气】 12条过程实践规则 简单测试 测试驱动 代码重构 结对编程 持续继承 现 …

Read more

软件开发模型

瀑布模型 V模型【瀑布变种】 原型模型 螺旋模型【原型+瀑布】 构建组装模型、基于构件的开发方法 快速应用开发RAD【瀑布+构建组装】 统一过程/统一开发方法 敏捷开发方法 瀑布和原型的相关模型 改进 …

Read more

软件开发方法

方法下会对应多种模型 结构化法 自顶向下 面向对象方法 自底向上 面向服务的方法 粗粒度、松耦合,标准化和构建化 其他软件开发方法 形式化方法,典型的例子就是数学模型化 统一过程方法【UP】 敏捷方法 …

Read more

软件生命周期

软件生命周期 软件定义时期 问题定义:软件的目标系统是什么 可行性研究:技术/经济/操作/社会可行性 需求分析:功能需求、性能需求和运行环境的约束 软件开发时期 概要(总体)设计:模块划分及模块间接口 …

Read more

搬砖方法论:分层策略

前言:当编写系统模块时,都会注意高内聚、低耦合、单一等等原则,虽然这些原则并非强制性,但是它对后续扩展有很好的指导性建议。但这些仅仅是微观上的,在宏观上也是需要类似这种指导性建议。这也是我们需要对架构 …

Read more

搬砖方法论:保持约束的单例

单例作为一种可供全局使用的唯一对象,而被普遍使用。但是能够这么做不代表就应该这么用。 单例在带来便利的同时也应该受到约束,如果一个单例遍布每个模块各处,这本身就是错误的使用方式,其缺点如下: 如果需要 …

Read more

搬砖方法论:New操作的危害

在编码时,只要在需要时进行New操作,不仅可以节省编码的时间,还可以直接获取当前需要的具体依赖项,但是事物总有两面性,在带来便利的同时,频繁的New操作也给维护带来不小的危害。 最主要的危害就是对依赖 …

Read more

搬砖方法论:对象图(Onject Graphs)

定义 在计算机科学,面向对象编程中,是由一群对象彼此相互关联、形成一个关系网络所构成的,这些对象彼此要不是存在着直接关联,要不就是透过一连串间接关联,串联在一起。对象与对象之间所构成的关系图,称之为对 …

Read more

搬砖方法论:接口还是抽象

概念上的区别 抽象是含有,接口是能够。 抽象更多描述的是一个交集、根基的概念,而接口更多表达的是一种功能,一种可随时增删的能力。 接口是首选 语法上接口可以多重继承 使用接口更利于编写 组合优于继承( …

Read more

搬砖方法论:控制反转

我需要一个汉堡 当我们去快餐店向服务员说明一个需要一个汉堡时,服务员会向我们提供一个已经加工完成的汉堡。可能每次提供的汉堡都有稍许不同,例如肉质、温度、面包的厚度、有无圆葱等等,但是他都符合汉堡的基本 …

Read more

副作用

副作用(side effect)是指,访问属性时,除了单纯设置或获取属性,还会造成对象状态的改变。如果存在多个副作用,程序的行为就要依赖于历史;或者说要依赖于求职顺序。如果以不同的顺序设置属性,类型每 …

Read more

搬砖方法论:接口的归属

interface,也就是常说的接口,使用它的地方有两处 接口的调用方(各种Manager) 接口的实现方(实例) 接口的归属应该是属于前者,也就是接口的调用方。 归其原因,要从使用接口的原因说起,使 …

Read more

搬砖方法论:通用语言和领域模型

你在说什么? 创世记第11章1-9句记录了“巴别城”的故事。当时地上的人们都说同一种语言,当人们离开东方之后,他们来到了示拿之地。在那里,人们想方设法烧砖好让他们能够造出一座城和一座高耸入云的塔来传播 …

Read more

搬砖方法论:组合根(Composition Root)

什么是组合根 定义:指的是在应用程序中的单一逻辑区块位置,在这会将各个模块组合起来。 组合根指的不是一个方法、也不是一种类别,而是一种概念。 为什么要有组合根 在没有组合根时,我们对于依赖的“New” …

Read more

后缀表达式

平常我们所用的标准四则运算表达式,如:29+3-2(10-3)/5,叫做中缀表达式,今天介绍一种不需要括号的后缀表达法,我们也把它称为逆波兰(Reverse Polish Notation ,RPN) …

Read more

算法的时间复杂度:大O阶表示法

一段算法的好坏,我们最直观的判断就是计算机执行的时间,点击运行,马上出现结果,如果出现卡段,或者很长时间才能出现结果,往往就会认为这是一个不好的算法,但是这些计算结果常会因为操作系统、硬件环境的不同而 …

Read more

关于游戏公司跳槽的心得

前言:关于跳槽的问题大家都不会避免,而且这种问问往往都很隐晦,大家都不喜欢放在桌面上谈起,今天笔者说一说基于以下几点,我所知道的跳槽的历程。 0.为什么跳槽 一般会有以下几种情况 钱给少了,薪水与同等 …

Read more

变身整洁代码的66条常用规则

主要参考 代码整洁之道(Robert C. Martin力作,韩磊献译) 前言:假设你是位医生,病人请求你再给他做手术前别洗手,因为那会花太多时间,你会照办吗?本该是病人说了算;但医生却绝对应该拒绝遵 …

Read more

静态文档生成器—DocFX

在日常开发中你是否有遇到如下情况 进入一个老项目对应的API不知道去哪里找 经常重复造轮子 功能相同但命名不同的API散落在程序库的各个角落 命名相近但功能不同的API充斥整个工程 陈旧准备废弃的AP …

Read more

程序开发中能够提高效率小的技巧

以下为笔者整理的一些在开发中提高工作效率的小技巧,希望能够给予你一些帮助和启示。 下班前的一小时不要向程序库提交代码。因为很有可能因为文件漏提交,逻辑错误等BUG造成程序库编译失败,阻碍其他同事开发进 …

Read more

C# 内存分配&&垃圾回收解析

在学习C#的过程中,大家一定会听说过一些CLR、JIT、LR、什么堆栈分配、内存释放的东西,谈到大家对这些元素的理解,多数都是这些是操作系统里面的东西,值类型、引用类型会和堆栈相关,但是在问到这些提到 …

Read more

C#数据集合解析

在日常开发中数据集合经常的会用到,使用频率较高的例如 List 、Dictionary,在数据集合中每种数据结构都有他们的优缺点,所以今天笔者对常用的数据集合归纳整理,一是防止自己忘记、二是希望能够帮 …

Read more

Unity C#基础之 特性,一个灵活的小工具

特性在框架中的应用也是很普遍,只需要在相应的类、字段、属性、函数等上面加上这个特殊的小东西就会在相应的元素上面添加一些特殊的应用效果,下面就为大家简单的介绍下特性的原理和应用场景 在往期的博客中有介绍 …

Read more

上海12家游戏公司面试横向评测

从上家公司技术宅离职,出去玩了一段时间然后开始找工作,有幸接到以下公司的面试邀请,所以借此机会做了一下各公司的面试横评。 以下为笔者主观意见横评,仅供娱乐,如有雷同,纯属巧合。 评测时间段为2020. …

Read more