当前位置: 首页 > news >正文

聚合优于继承

今天看同事的一个简单的界面,发现这个view controller继承于另一个base view controller。

看了下base view controller的代码后,发现以前和同事讨论是否需要一个base view controller的争论中,

我的担心都变成了事实:

1、这个base view controller已经成了一个什么都装的筐,base view controller中的大部分代码只为一、两个子类服务。根本没有  

      体现出base的意义来。

2、这个base view controller的存在,影响了我对代码的阅读。它时刻在干扰者我,时不时得要看一看子类中的哪个东西是在base view controller中实现的。


但是最要命的不是上两条,而是我发现的一个新问题,就是如果你想改base view controller中的代码时,负担非常重,因为你不

知道子类是如何利用父类的功能的。base view controller最终会成为一个垃圾场,这个类中的代码将会只增不减,增加的时候是不考虑

全局的增加,只要我现在作的这个子类方便就可以了。而后来维护代码的人要修改原有代码或删除可能已无用的功能则要付出巨大的代

价。

     而且,你如果要在另一个工程中用到现在工程中的代码,这个父类将是一个极大的拖累,你是带他还是不带呢?

相关文章:

  • 数据源变更时,table中更新对应cell的显示
  • Visual C# 2005 - 如何于DataGridView控件中以跨数据行方式显示数据
  • iPhone在设置中修改应用相关项,应用会重启
  • 10月9日培训日记
  • 编译蘑菇街的teamtalk
  • HTML框架代码全集
  • 同一bundle id的应用,不同证书在设备上覆盖安装会失败
  • Xcode_6.4.dmg 官方下载地址
  • 从历史学习的 8 堂架构课
  • iOS错误报告中关于崩溃地址的分析
  • 原来Windows下面也有硬链接
  • 程序员将是人类最后一个被人工智能代替的工作
  • JNDI配置原理详解
  • 利用layer的FillRule属性生成一个空心的layer
  • 最近做的一个手机上的联网应用程序
  • MQ框架的比较
  • SpriteKit 技巧之添加背景图片
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 基于组件的设计工作流与界面抽象
  • 漂亮刷新控件-iOS
  • 前端学习笔记之观察者模式
  • 微服务核心架构梳理
  • 用 Swift 编写面向协议的视图
  • 数据可视化之下发图实践
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​学习一下,什么是预包装食品?​
  • #include到底该写在哪
  • #pragma multi_compile #pragma shader_feature
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (zt)基于Facebook和Flash平台的应用架构解析
  • (多级缓存)多级缓存
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (一)认识微服务
  • (转) RFS+AutoItLibrary测试web对话框
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET/C# 使窗口永不获得焦点
  • .net6使用Sejil可视化日志
  • .so文件(linux系统)
  • @Autowired和@Resource的区别
  • @Documented注解的作用
  • [ NOI 2001 ] 食物链
  • [.net]官方水晶报表的使用以演示下载
  • [14]内置对象
  • [codevs 1515]跳 【解题报告】
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷
  • [IE9] 解决了傲游、搜狗浏览器在IE9下网页截图的问题
  • [Java][Liferay] File system in liferay
  • [java后端研发]——文件上传与下载(2种方式)
  • [Linux] day07——查看及过滤文本
  • [MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择
  • [node]Node.js 模块系统