<?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>Tdd on Asher's Blog</title><link>https://huan11.github.io/posts/tdd/</link><description>Recent content in Tdd on Asher's Blog</description><generator>Hugo -- 0.147.7</generator><language>en-us</language><lastBuildDate>Sat, 07 Jun 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://huan11.github.io/posts/tdd/index.xml" rel="self" type="application/rss+xml"/><item><title>Bad Smell</title><link>https://huan11.github.io/posts/tdd/bad_smells/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://huan11.github.io/posts/tdd/bad_smells/</guid><description>&lt;h2 id="list-1-uncle-bob">List 1 Uncle Bob&lt;/h2>
&lt;p>Refactoring: Improving the Design of Existing Code&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://learning.oreilly.com/library/view/refactoring-improving-the/9780134757681/toc.xhtml">https://learning.oreilly.com/library/view/refactoring-improving-the/9780134757681/toc.xhtml&lt;/a>&lt;/p>
&lt;p>&lt;a href="https://learning.oreilly.com/library/view/refactoring-improving-the/9780134757681/ch03.xhtml#ch03">Chapter 3: Bad Smells in Code&lt;/a>&lt;/p>&lt;/blockquote>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>##&lt;/th>
&lt;th>Bad Smell&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>Mysterious Name&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>Duplicated Code&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>Long Function&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>Long Parameter List&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>Global Data&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>Mutable Data&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7&lt;/td>
&lt;td>Divergent Change&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>Shotgun Surgery&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>9&lt;/td>
&lt;td>Feature Envy&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>Data Clumps&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>Primitive Obsession&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>Repeated Switches&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>13&lt;/td>
&lt;td>Loops&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>14&lt;/td>
&lt;td>Lazy Element&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>15&lt;/td>
&lt;td>Speculative Generality&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>16&lt;/td>
&lt;td>Temporary Field&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>17&lt;/td>
&lt;td>Message Chains&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>18&lt;/td>
&lt;td>Middle Man&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>19&lt;/td>
&lt;td>Insider Trading&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>20&lt;/td>
&lt;td>Large Class&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>21&lt;/td>
&lt;td>Alternative Classes with Different Interfaces&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>22&lt;/td>
&lt;td>Data Class&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>23&lt;/td>
&lt;td>Refused Bequest&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>24&lt;/td>
&lt;td>Comments&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h2 id="list-2-郑烨">List 2 郑烨&lt;/h2>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>##&lt;/th>
&lt;th>代码坏味道&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>1&lt;/td>
&lt;td>命名不规范&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>2&lt;/td>
&lt;td>乱用英语&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>3&lt;/td>
&lt;td>重复代码&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>4&lt;/td>
&lt;td>长函数&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>5&lt;/td>
&lt;td>大类&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>6&lt;/td>
&lt;td>长参数列表&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>7&lt;/td>
&lt;td>滥用控制语句&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>8&lt;/td>
&lt;td>缺乏封装&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>9&lt;/td>
&lt;td>可变的数据&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>10&lt;/td>
&lt;td>变量声明与赋值分离&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>11&lt;/td>
&lt;td>依赖混乱&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>12&lt;/td>
&lt;td>不一致的代码&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>13&lt;/td>
&lt;td>落后的代码风格&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="命名">命名&lt;/h3>
&lt;p>&lt;img alt="img" loading="lazy" src="https://static001.geekbang.org/resource/image/4e/66/4e725dfea2eeb16ef0f654813ca42066.jpg?wh=2284*3156">&lt;/p></description></item></channel></rss>