<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>代码 on 文叨叨 | IaaS 排障手记</title><link>/tags/%E4%BB%A3%E7%A0%81/</link><description>Recent content in 代码 on 文叨叨 | IaaS 排障手记</description><generator>Hugo</generator><language>zh-cn</language><lastBuildDate>Sat, 28 Mar 2026 10:00:00 +0800</lastBuildDate><atom:link href="/tags/%E4%BB%A3%E7%A0%81/index.xml" rel="self" type="application/rss+xml"/><item><title>魔数、默认值使用常量封装：唯一来源</title><link>/posts/constant-single-source/</link><pubDate>Sat, 28 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/constant-single-source/</guid><description>魔数、默认值使用常量封装。提高可读性，统一定义唯一来源，唯一来源相当于是统一了标准。常量在离使用代码最近的地方定义比较好。</description></item><item><title>符合设计原则，可以规避一些想不到的问题</title><link>/posts/design-principles-avoid-problems/</link><pubDate>Sun, 22 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/design-principles-avoid-problems/</guid><description>把只读状态写到了事务字段里，明显不符合单一原则。一个字段怎么能表示多种意思呢？如果一开始就不违反单一原则，即便没想到并发冲突问题，也不会出现问题。</description></item><item><title>即便是补丁，也要面向对象，而不是针对流程打补丁</title><link>/posts/patch-object-oriented/</link><pubDate>Sat, 21 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/patch-object-oriented/</guid><description>哪里遇到问题了，就找个地方加个开关、加个检查、加个条件判断来处理掉。这导致不够系统化，引入了局部的分支点，会造成多流程的耦合交叉，扩展容易遗漏。</description></item><item><title>代码也有一致性：面向接口而非面向实现</title><link>/posts/code-consistency-interface/</link><pubDate>Sat, 14 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/code-consistency-interface/</guid><description>不仅数据有一致性问题，代码的一致性问题更加遍地都是。判断主机是否运行应该面向 libvirt 接口，而不是面向实现中的文件、过程。</description></item><item><title>面向接口，面向接口，面向接口</title><link>/posts/interface-oriented/</link><pubDate>Sun, 08 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/interface-oriented/</guid><description>接口很多时候听起来很有道理，写的时候会质疑是不是为了接口而接口。一写二抄三重构，前面没有必要的时候不用接口，后面重复的时候可以引入接口。</description></item><item><title>封装和独立的区别：复用 vs 管理能力</title><link>/posts/encapsulation-vs-independent/</link><pubDate>Sat, 07 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/encapsulation-vs-independent/</guid><description>封装仅仅是为了复用，但是独立有管理能力。封装调用了就得执行，独立有自己的一套管理规则，比如排队、限流、调整优先级、丢弃、转换等。</description></item><item><title>底层最好有默认值，上层可以少硬编码</title><link>/posts/bottom-default-value/</link><pubDate>Sun, 01 Mar 2026 10:00:00 +0800</pubDate><guid>/posts/bottom-default-value/</guid><description>底层（被依赖者）最好有默认值，上层（依赖者）可以少硬编码。判断不是问题，问题是重复判断；硬编码本身是必须的，问题是重复的硬编码。</description></item><item><title>一个目的一种实现：少即是多</title><link>/posts/one-goal-one-implementation/</link><pubDate>Sat, 28 Feb 2026 10:00:00 +0800</pubDate><guid>/posts/one-goal-one-implementation/</guid><description>不要封装太多的实现方法，会造成使用复杂度。一个目的提供一种方法，提供的太多，反而让使用者陷入学习复杂性。</description></item><item><title>封装不在于使用复杂度，而在于使用频率</title><link>/posts/encapsulation-frequency-not-complexity/</link><pubDate>Sun, 22 Feb 2026 10:00:00 +0800</pubDate><guid>/posts/encapsulation-frequency-not-complexity/</guid><description>如果一个工具仅仅在一两个地方调用，那无所谓封装。如果一个工具通篇各处都在调用，那就一定要封装了，即便这个工具仅仅是一行命令。</description></item><item><title>调用第三方一定要封装，哪怕仅仅是一个命令行</title><link>/posts/wrap-third-party-call/</link><pubDate>Sat, 21 Feb 2026 10:00:00 +0800</pubDate><guid>/posts/wrap-third-party-call/</guid><description>调用第三方工具一定要封装，哪怕仅仅是一个命令行。封装的好处：应对版本变化、方便做切面、简化使用、提供统一方法。</description></item><item><title>抽象流程还是抽象对象？一写二抄三重构</title><link>/posts/abstract-flow-vs-object/</link><pubDate>Sun, 15 Feb 2026 10:00:00 +0800</pubDate><guid>/posts/abstract-flow-vs-object/</guid><description>要不要抽象，关键在于要不要复用。业务流程都是独立的，不需要复用；技术类流程需要复用。一写二抄三重构，第二次大量重复时就可以开始重构了。</description></item><item><title>代码写三遍：跑通、防御、优化</title><link>/posts/code-write-three-times/</link><pubDate>Sat, 14 Feb 2026 10:00:00 +0800</pubDate><guid>/posts/code-write-three-times/</guid><description>写代码高价值套路：代码写三遍。第一遍跑通，第二遍防御，第三遍优化。过早的优化是万恶之源，尤其是新服务新项目的时候。</description></item></channel></rss>