心得之——程序的修改和拓展

心得之——程序的修改和拓展

  作为一名程序员或者说了解过程序的人来说,我相信常常都会听到别人说一个好的程序最基本的就是良好的可拓展性和易修改性(大概是这个意思,原我给忘了),那么到底什么是良好的拓展和已修改性呢,我们又为什么要保证程序的修改和拓展呢?这是我从大学时期就一直在想的问题。

  我记得当时我们老师的回答是:假如你现在要去卖水果:苹果和香蕉,那么你定一个方法 public void  sellFruit(苹果对象,香蕉对象),好了现在你直接用这个方法你可以去卖水果了,但是问题来了,如果某一天你发财了,你可以卖5中水果:水蜜桃、苹果、香蕉、葡萄和柚子,那么你是宁外写一个方法 public void  sellFruit2(苹果对象,香蕉对象,水蜜桃,葡萄,柚子),还是说还是在原方法上呢?当时我想了半天,直接就晕了,然后老师就说,不管是水蜜桃、苹果还是香蕉不都是水果吗?我一听,对啊,当即就把方法改了public void  sellFruit(水果对象),其他所有水果的对象继承水果对象,老师笑了笑,直说你的面向对象还挺喜欢用.....请问一下各位,你能看懂老师到底是在说什么吗?

  其实后来自己接触的程序多了,也就慢慢的有了一个大概的了解,其实换一个例子来说:你要让某个服装厂改服装:test(颜色,型号);结果你把衣服拿回来客户还不满意说还要加特点,行这个时候你就重写test(加特点);那么试想一下如果这回客户说我想衣服的袖子一边长一边短,你是否又要重写方法呢?其实不用,首先他要改的是衣服这个对象,那么假如衣服这个对象目前一共的特点包括:颜色、大小、款式、袖长、腰围、胸围,test(衣服对象)那么在这个方位内的属性就算客户改需求是否我们也就不用再改方法呢,哈有一种情况,这个时候客户说衣服是有领的,我要换成无领,那么我们也只要在衣服对象中添加衣领属性就行,这是大大的减少了我们的修改量。可能这个说的也还是很抽象,特别是对于没有更改过需求,或者业务层次区分不够明显的,可能理解起来就感觉没什么区别,或者还会觉得更麻烦。

  其实在真正的一个项目中,前期需求不代表永远,就算项目上线了,也有可能加功能,对项目进行拓展,一般来说修改是每个程序员常经历之事,改自己的代码还好,但是要是你要改的是别人的代码,而他的代码里边所有方法全是用的属性,参数值在传递,那么我想需求稍微一变那你就要疯了吧,就比如说:dao、servces、实现类、接口,对象,如果你使用的是参数值传递,那么需求一变不好意思,dao、servces、实现类、接口就都得更改,但是如果您使用的是对象传递,那么你只需要更改对象和实现类就好,这是大大的减少了我们的工作量,提高了工作效率,最关键的是心情还好了。以上呢就是简单的说了一下程序的修改

  对于程序的拓展性可能更多的就涉及到泛型和反射,当然也有通过对象属性实现拓展,那么我们还是先举个列子,简单的说一下为什么要提供拓展性。

  还是以服装厂修改衣服举例,我相信一个再穷的服装厂肯定都不是只卖衣服,可能还有裤子,或者其他的,或者说衣服都不止一种品种,那么对于不同的物品是佛偶我们还要去创建不同的方法呢,那么当我们想修改一个新的物种的时候,恭喜你,:dao、servces、实现类、接口,对象,你都需要修改,但是反之假如你用的是泛型和反射,那么你只需要提供一个方法test(?),然后再在实现类中利用反射获取对象。class,获取对象属性,那么你的所有问题的解决了,当然前提是你的所有物品的大概属性还是应该一样。

总而言之,言而总之:面向对象、泛型、反射、继承就是你要攻克的堡垒,加油吧!

时间: 2025-01-08 18:15:41

心得之——程序的修改和拓展的相关文章

iphone程序小图修改(笔记iphone4-ipad)

方法一 1.57*57像素的png 图片方形的就可以. 2.拖放到xcode 的resources 文件夹里. 3.选中resources文件夹,add to project 然后找到图片. 方法二 找到项目的_info.plist 在属性栏里,找到icon file 如果没找到这个属性可以手动添加属性,设置相应的文件路径. iphone程序小图修改(笔记iphone4-ipad),布布扣,bubuko.com

“小程序+”时代——公众号拓展系统

如今,微信已经成为全球使用人数最多的移动通讯应用,用户数量呈爆发式增长,是当前中国最重要的智能手机应用终端之一.而微信公众号于2012年8月诞生,至今约有上千万个微信公众号. 而微信小程序于2017年1月9日凌晨正式上线.小程序一开始作为微信生态万物互联的连接器出现,具备链接线上与线下的诸多能力.因此,大量的线下传统企业为了实现互联网+,提升企业效率,就刚好找到这个需要合适的渠道连接器. 在这种国内小程序蓬勃发展的大前提下,11月22日,在微盟小程序沙龙长沙站上,微盟创始人兼CEO孙涛勇现场就小

支付宝小程序开发——修改小程序原生radio默认样式

如下,要做这样的单选按钮,小程序原生的单选按钮使用起来还算是比较方便的,所以选择直接进行样式改造了: 对于微信小程序来说,单选按钮实质上是一个有自己内部结构的组件,内部有自己的元素结构,所以在重定义样式的时候,需要用到组件你内部的元素类名来定义,详见:微信小程序开发——修改小程序原生checkbox.radio默认样式. 不同于微信小程序,支付宝小程序的大部分组件及样式跟Html都比较接近的.对于单选按钮,则与html标签类似,可以采用同样的方法进行样式修改.具体如下: /* 单选按钮样式*/

程序猿的能力拓展模型

听人说了一个词儿,叫作"Comfortable Zone",中文是"舒适区". 这个词儿让我瞬间联系到程序猿的能力边界问题,我画了能力拓展模型图.例如以下: 我认为这个能力拓展模型,适用于一个人的方方面面.但这次我打算仅仅拿程序猿来扯一下. 能力拓展模型 图中左側是我们的现状,最内层的原型是我们感到舒适的区域.我称之为"舒适区". 以程序猿为例,当程序猿的技术能力和解决这个问题的能力达到一定水平之后,就能够轻松胜任某些开发任务.解决特定实际问题,

程序员的能力拓展模型

听人说了一个词儿,叫作"Comfirtable Zone",中文是"舒适区". 这个词儿让我瞬间联系到程序员的能力边界问题,我画了能力拓展模型图.如下: 我觉得这个能力拓展模型,适用于一个人的方方面面,但这次我打算只拿程序员来扯一下. 能力拓展模型 图中左侧是我们的现状,最内层的原型是我们感到舒适的区域,我称之为"舒适区". 以程序员为例,当程序员的技术能力和解决问题的能力达到一定水平之后,就能够轻松胜任某些开发任务,解决特定实际问题,给用户带来

让asp.net程序在修改web.config后不重启

默认情况下web.config修改后,asp.net程序会被重启.为了防止程序重启,要修改machine.config 文件. machine.config默认在C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\CONFIG目录下. restartOnExternalChanges="false" requirePermission="false" /> restartOnExternalChanges设置为false

程序员修改那些丧心病狂的BUG,得知真香后瞬间崩溃!

我们经历的大部分bug有的被其他人修复了并且在互联网分享出来了,这时候我们通过Stackoverflow.Baidu.Google等搜索引擎找到答案了.但是我们在工作中也可能会遇到一些疑难的bug,这里bug我们在搜素引擎上找不到解决方案,可能好几天都不得其解,这些迟迟没有解决的bug往往搞得人焦头烂额. 那作为一个苦逼的程序员,究竟碰见过哪些丧心病狂的bug呢?下面,我们来看看他们与bug的故事. #小A: 写JS,自己手机没电了,拿同事老张的安卓机调试,很简单的获取用户微信昵称,结果死活获取

微信小程序——动态修改页面数据及参数传递

动态修改页面数据 在小程序中我们经常要动态渲染数据,对于新手而言我们常常遇到修改的数据在控制台显示和页面显示不一致,因为我们用“=”修改数据的,这种是可以修改,但无法改变页面的状态的,还会造成数据不一致,代码如下: data: { array: [{ text: '数组' }] } onLoad:function(){ this.data.array[0].text=1; console.log(this.data.array[0].text); } 修改代码: onLoad:function(

在程序中修改IP win7 winXP(参考1)

https://blog.csdn.net/bbdxf/article/details/7548443 Windows下程序修改IP的三种方法 以下讨论的平台依据是Window XP + SP1, 不考虑Windows其它版本的兼容性问题, 但对NT系列的系统, 理论上是通用的. 方法一: 网卡重启     更改Windows网卡属性选项中IP地址, 通过对比前后注册表, 可以发现以下几处发生变化 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Serv