IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:抽象

共 3 篇相关文章

IT 累计浏览 3,222

不应该用public static function来改善系统的抽象层次

这篇讲的是PHP开发中一个常见的抽象误区。作者观察到,很多团队为了复用代码和分层,会抽出所谓的Service层,但实现上却大量使用public static function。作者直言这种做法很糟糕——因为public static function本质上就是全局函数,而滥用全局函数是编程中的反模式。 文章的核心观点是,虽然抽象Service层本身没错,但用静态方法来实现,往往导致“抽象能力停留在函数级别”。作者用了一个生动的比喻:这就像破窗户理论,一旦有人开了滥用全局函数的头,代码就会迅速腐化,最终整个系统充斥着相互调用的全局函数,变得难以维护。他强调,全局函数和全局变量是需要极力避免的,而不是被当作抽象的工具去增加。 作者最终呼吁,要实现真正的分层抽象,不应依赖public static function,而应采用更合理的架构设计,来约束依赖和作用域,从而避免系统在团队协作中走向失控。

IT 累计浏览 2,884

编程珠玑番外篇 -M. 软件工具的设计哲学1

这篇讲的是软件工具设计中一个被忽视却至关重要的矛盾:为什么有些功能强大的工具让人望而却步,而有些简洁的工具却能广受欢迎。作者从设计者和使用者两种视角切入,探讨了工具背后的哲学选择如何直接影响其学习曲线和最终命运。 核心观点在于,优秀的设计并非单纯地堆砌功能,而是在“强大的能力”与“直观的易用性”之间找到精妙的平衡。文章通过具体的设计决策分析了这种平衡是如何实现的——比如,一个命令行工具是选择提供无数参数,还是通过精心设计的默认行为与少量开关来覆盖常见场景?这背后反映的是对用户认知模型的不同理解。 学习曲线被视作检验设计哲学的试金石。陡峭的曲线可能意味着设计者更侧重为专家提供深度控制,而平缓的曲线则体现了对新手引导和渐进式学习的重视。文章引导读者思考,真正的设计智慧在于让工具随着用户能力的增长而“一同成长”,而非在初次使用时就筑起高墙。 对于开发者和技术管理者而言,这篇文章的价值在于提醒我们:在设计或选用工具时,需要超越“功能清单”,深入考量其交互逻辑所承载的理念,以及它如何塑造用户的学习与工作流。工具的设计哲学,最终定义了我们与技术协作的方式。

IT 累计浏览 3,395

从 if else 到 switch case 再到抽象

这篇讲的是代码中复杂分支的抽象之道。作者从接手遗留代码时常遇到的痛点切入——那些嵌套两层以上的 if-else 或 switch-case 往往让人望而生畏。文章指出,这类复杂分支并非天生,而是在需求迭代中,因开发者追求短期速度或抽象意识不足,不断用标志位和条件判断“打补丁”累积而成。 作者以一段百度Hi老代码为例,揭示了复杂分支的核心问题:一个简单的 else 分支,其实隐含了它前面所有条件取反再相与的复杂逻辑,这使得代码意图变得极其隐晦,难以阅读和维护。 为了解决这一问题,文章提出了两种清晰的抽象路径。一是用面向对象的工厂模式,将不同分支的处理封装到独立的类中,解除嵌套,让每个模块只需关注自身职责。二是采用声明式的模式匹配,用直观的数据结构描述直接匹配目标数据,彻底消除隐含逻辑。后者让每个监听条件都明确、独立,大大提升了代码的可读性。文章最终引导读者思考,如何通过提升抽象层次,让代码在复杂迭代中保持清晰。