关于 pragmatic-programmer
pragmatic-programmer 是基于《The Pragmatic Programmer》的软件开发原则参考技能,面向希望改进日常开发实践的开发者。内容涵盖设计、调试、测试、自动化、沟通与持续学习。
主要功能
- 01DRY、正交性与可逆性原则
- 02调试、重构与测试实践
- 03命令行与文本处理技巧
- 04自动化与代码生成建议
- 05估算、沟通和持续学习
适用场景
- 01评估代码重复与模块耦合
- 02规划调试、重构或测试工作
- 03改进团队开发流程与沟通
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ grndlvl/ software-patterns --skill pragmatic-programmer安装后在 Claude Code 中输入/pragmatic-programmer确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
practices/assertive-programming.mdautomation.mdcode-generators.mddebugging.mddecoupling.mddesign-by-contract.mdplain-text.mdrefactoring.mdshell-games.mdtesting.mdtext-manipulation.mdprinciples/domain-languages.mddry.mdestimating.mdorthogonality.mdprototypes.mdreversibility.mdtracer-bullets.md详细介绍
Pragmatic Programmer 参考指南
这是一份全面的实用软件开发原则参考,基于 David Thomas 和 Andrew Hunt 的《The Pragmatic Programmer》。这项技能提供了助你成为更优秀开发者的历久弥新建议。
此技能的触发条件
遇到以下情况时,此技能会自动触发:
- 讨论软件开发最佳实践
- 需要调试策略
- 考虑代码重复(DRY)
- 思考工具与自动化
- 讨论项目估算或规划
- 审查开发工作流
核心理念
“关心自己的手艺。” “认真思考自己的工作。”
实用主义程序员:
- 对自己的职业生涯和工作负责
- 不找借口,而是提供选项
- 是变革的推动者,而非环境的受害者
- 持续学习并适应变化
快速参考
基础原则
| 原则 | 概要 |
|---|---|
| DRY - 不要重复自己 | 每条知识都应有唯一的表示形式 |
| 正交性 | 保持事物独立、解耦 |
| 可逆性 | 让决策可逆;避免被锁定 |
| 示踪弹 | 通过端到端骨架快速获取反馈 |
| 原型 | 先学习再承诺;原型完成后应丢弃 |
| 领域语言 | 用贴近问题领域的方式编程 |
| 估算 | 学会给出准确的估算 |
实用技巧
| 实践 | 概要 |
|---|---|
| 纯文本的力量 | 以易于访问的格式保存知识 |
| Shell 技巧 | 掌握命令行 |
| 调试 | 解决问题,而不是归咎于人 |
| 文本处理 | 学习文本处理工具 |
| 代码生成器 | 编写能生成代码的代码 |
| 契约式设计 | 明确权利与责任 |
| 断言式编程 | 如果某事不可能发生,就使用断言 |
| 解耦 | 尽量减少模块间的依赖 |
| 重构 | 持续改进代码 |
| 测试 | 尽早测试、经常测试、自动化测试 |
| 自动化 | 不要依赖手动流程 |
实用主义者的建议
书中的关键建议:
- 关心自己的手艺 - 如果你不关心,为什么要用一生来开发软件?
- 认真思考自己的工作! - 关闭自动驾驶模式,主动掌控工作
- 提供选项,不要找借口 - 不要说做不到;说明可以怎么做
- 不要容忍破窗 - 发现糟糕的设计和错误的决策时,就把它们修正
- 成为变革的催化剂 - 向人们展示未来,并帮助他们参与其中
- 牢记全局 - 不要过于专注,以至于忘了自己在做什么
- 将质量纳入需求讨论 - 让用户参与确定质量标准
- 定期投资于自己的知识组合 - 养成学习的习惯
- 批判性地分析所读所闻 - 不要被供应商或媒体炒作左右
- 说什么和怎么说同样重要 - 沟通很重要
知识组合
像管理金融投资组合一样管理自己的知识:
- 定期投资 - 有规律地学习新知识
- 分散投资 - 熟悉多种不同技术
- 管理风险 - 在稳妥技术与高风险、高回报技术之间取得平衡
- 低买高卖 - 在新兴技术成为主流之前就开始学习
- 审查并再平衡 - 定期重新评估
建议:
- 每年学习一门新语言
- 每月读一本技术书籍
- 也要阅读非技术类书籍
- 参加课程
- 参与本地用户群组
- 尝试不同的环境
- 关注最新动态(新闻简报、博客、会议)
沟通
- 明确自己想说什么
- 了解受众
- 选择合适的时机
- 选择合适的风格
- 让内容赏心悦目
- 让受众参与进来
- 做一个倾听者
- 及时回复他人
- 文档是项目的一部分,而不是事后补充
语言翻译说明
示例使用通用伪代码。请根据所用语言进行调整:
- PHP:
class、function、->、类型提示 - JavaScript/TypeScript:
class、箭头函数、. - Python:
class、def、.、类型提示 - Java/C#:直接映射并使用访问修饰符
基于 David Thomas 和 Andrew Hunt 所著的《The Pragmatic Programmer: Your Journey to Mastery》中的理念。
评论
支持 Markdown