Software the Hard way
Preventing Software Rot
Bayes vs Frequentists – An Empirical Test In Code
When Feature Flags Do And Don’t Make Sense
The Birth of Legacy Software – How Change Aversion Feeds On Itself
Abstractions Are In The Eye Of The Beholder
Nuances of Overloading and Overriding in Java
Alert Fast
Hiring is Broken And Yours Is Too
SSH Considered Harmful – Why You Should Be Using Persistent Sessions
Cracking the Senior Software Interview
Preventing Software Rot
Bayes vs Frequentists – An Empirical Test In Code
When Feature Flags Do And Don’t Make Sense
The Birth of Legacy Software – How Change Aversion Feeds On Itself
Abstractions Are In The Eye Of The Beholder
Nuances of Overloading and Overriding in Java
Alert Fast
Hiring is Broken And Yours Is Too
SSH Considered Harmful – Why You Should Be Using Persistent Sessions
Cracking the Senior Software Interview
Lucid Mesh
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Viewing Data
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: The Remaining Tables
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Relational Data
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Data Validation and Database Import
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Data Collection
Exploring Monster Taming Mechanics in Final Fantasy XIII-2
The Year in Review, Just the Leisure Time
Sharpen Your Programming Tools
Tech Books I Will Read Again
Tech Book Face Off: Game Engine Black Book [Wolfenstein 3D Vs. Doom]
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Viewing Data
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: The Remaining Tables
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Relational Data
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Data Validation and Database Import
Exploring Monster Taming Mechanics in Final Fantasy XIII-2: Data Collection
Exploring Monster Taming Mechanics in Final Fantasy XIII-2
The Year in Review, Just the Leisure Time
Sharpen Your Programming Tools
Tech Books I Will Read Again
Tech Book Face Off: Game Engine Black Book [Wolfenstein 3D Vs. Doom]
I'm TualatriX
一个十年 iPhone 使用者的「重新体验 iPhone」之旅
重置 macOS 的自动化 Automation 设置以解决奇怪故障
如何让树莓派 (Raspberry Pi) 连接上家中 Wi-Fi 的 5G 频段
One Switch 1.12 版本:Xcode 缓存清理 + 清空废纸篓
Manico 2.7 更新说明(暨谈谈 App 的维护成本)
SwiftUI 糟糕的现状和未来的展望
SwiftUI 学习:疑似 List Selection 的 Bug 的案例
Django Admin:动态修改 inlines fields
关于 MacBook Pro 的持续输出性能和评测方式
One Switch 1.8 版本发布:增加「锁定键盘」开关,支持 AirPods Pro
一个十年 iPhone 使用者的「重新体验 iPhone」之旅
重置 macOS 的自动化 Automation 设置以解决奇怪故障
如何让树莓派 (Raspberry Pi) 连接上家中 Wi-Fi 的 5G 频段
One Switch 1.12 版本:Xcode 缓存清理 + 清空废纸篓
Manico 2.7 更新说明(暨谈谈 App 的维护成本)
SwiftUI 糟糕的现状和未来的展望
SwiftUI 学习:疑似 List Selection 的 Bug 的案例
Django Admin:动态修改 inlines fields
关于 MacBook Pro 的持续输出性能和评测方式
One Switch 1.8 版本发布:增加「锁定键盘」开关,支持 AirPods Pro
每次设计,你都会从什么问题想起?
博客分类: Java设计
领域模型
最近加入一个新的平台项目,看过基本用例后,在YY设计方案时,头脑中第一反应回答的问题:
1. 中心领域模型是什么?
2. 微核心是什么?
3. 给用户的API是什么?
4. 给扩展者的SPI是什么?
5. 扩展者可否基于微核心替换任意位置上的实现?
6. 服务域,实体域,会话域各是什么?
7. 客户端,服务器端各自关心什么?
8. 所有涉众都考虑周全了?
9. 有哪些需要特殊化处理?是否可以抽象到一起?
10. 设计有没有防碍非功能性需求的优化?
博客分类: Java设计
领域模型
最近加入一个新的平台项目,看过基本用例后,在YY设计方案时,头脑中第一反应回答的问题:
1. 中心领域模型是什么?
2. 微核心是什么?
3. 给用户的API是什么?
4. 给扩展者的SPI是什么?
5. 扩展者可否基于微核心替换任意位置上的实现?
6. 服务域,实体域,会话域各是什么?
7. 客户端,服务器端各自关心什么?
8. 所有涉众都考虑周全了?
9. 有哪些需要特殊化处理?是否可以抽象到一起?
10. 设计有没有防碍非功能性需求的优化?