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

浅谈我心中的软件开发


很多时候,在网上看到了很多人的代码,以及代码中的错误;

觉得,很多人的开发方式似乎还是,自己写代码,自己写SQL,自己调试,甚至自己写界面!

——我之前也有过类似的开发方式,完成一个功能:调试次数至少 20,一般40,多则 N次

——每次调试该会浪费多少时间!?

网上也有人说:不要重复造轮子!

但是冒似很多程序员对这句话的理解一般(我强调了“一般”的)是:将代码公有化,或者 将代码 Ctrl+C+V;

却很少看到有人将 代码 组件化(我这里说的 组件化,不是 Asp.Net 的用户控件,而是 组件控件);

——好吧,解释一个 我所表述的 “用户控件”和“组件控件”有什么不同:用户控件不能实例化,不能动态创建;

当一个功能完成了,有些人的代码往往可能超过 几千行,超过 2000行的话,VS2010 就往往被卡死!

维护起来,光找到需要修改的代码都往往需要几分钟;

维护完之后,还需要调试,浪费时间——靠,我怎么对调试这么没有好感呢!

其实,软件开发中,谈谈我感觉最好的方式是什么:

在我所见过的程序员中,我看到了这么几种程序员:

有一家,汽车工厂,这家工厂有一个Ctrl+C+V 车间,可以将已经成型的东西迅速复制一份;

工人们,都在按照客户的需求制造汽车;

客户A要求:黑色车身,白色轮子;

X01流程:工人们于是,制造了黑色车身,白色的轮子——为了不重复造轮子,工人们没有给模板轮子上色;

A客户满意了;

B客户来了:白色车身,红色轮子;

X02流程:工人们庆幸:幸好模板轮子没有上色,于是,复制了大量轮子,再涂成红色;

B客户满意了;

这时客户007来了:黑色车声,黑色车轮,防弹玻璃;

X03流程:工人们除了防弹玻璃外,其他部件复制出来,给轮子上个颜色;交付了;

007在一个黑暗的隧道因为全黑色的车声,所以被卡车撞成伤;

于是007说:黑色不安全,给我全部换成白色;

X04流程:工人们重复了 X03流程,只是上了不同的颜色;

007 在一次执行任务过程中,完成任务准备离开时,在高速公路上被人盯上:“老大,007 的车牌是多少?”——“SB007”——“我看到了,火箭弹准备发射…”…..最后,病床上的007大喊,SB的汽车公司呀!!

于是007说:这个车牌不安全,我要可以换车牌的车;

X05流程:工人们换了个车牌,且将车牌的号码放到了配置文件中;

007在一次任务中,前方大桥被人炸断,“靠…..Shit…..你这个恐龙想干什么?”——“我在水里看到你,将你救起来,给你做人工呼吸…”

——最后,007觉得一世英明,保留几十年的初吻,毁在了一个恐龙嘴上;于是举枪自杀!

再继续说下去:

因为这件事之后,工厂也认识到工人只针对业务进行生产有点浪费效率;

于是聘请了顶尖专家:开发了一个机器人生产线:

生产线出来的汽车可以在生产线上配置:座位数,车长;

——针对不同的客户选择长度,座位数,颜色;

工人们还是要针对 不同客户,涂不同的颜色,还是要做事——但肯定少很多!

——不是有 Ctrl+C+V 车间么?是!——但是这个车间不能改变 座位数,车身长度!

007上了天堂,在天堂遇到另外一个汽车厂;

这个汽车厂有点不一样;这个汽车厂卖的是 汽车人(变形金刚)!

007在天堂,坐着自己的座驾,时而变化自己的颜色,时而改变车牌,时而变成飞机,时而隐身….

——于是007 在天堂以为做着维护一方安定的英雄的生活,最后遇到了邦女郎,两人从此幸福的生活在一起!

(End)

从“007最初的杯具” 中,我们看到了 那家汽车厂的生产中的流程;

工人们偷懒了吗?——没有,工人们克勤克俭,完成任务且没有质量问题;

工人们SB吗?——不,工人们将可以公用的东西都进行了公用,比方说轮子;

这时的工人是在针对业务做事:就像程序员在针对具体业务写代码一样,他们知道将公共的程序代码(轮子)提取出来,供以后使用;

后来,工厂改进生产线;

工人们需要做的事情减少了,对于不能公用的部分(座位数,车长长度)都可以用生产线控制了:

就像是程序员突然有了代码生成器,你在生成器中指定参数,生成器就会给你指定的代码;

——但是生成器生成的代码太大众化;不能针对特殊需求:比如需要飞行的需求!

希望汽车可以飞的客户只有 1/100000 ,为了这么少的客户群,改进生产线是多么SB的行为——当然,改进了更好!

最后,在天堂;

天堂的工厂只生产一种汽车人!——通过Ctrl+C+V 车间无限复制!

客户要什么形态,客户自己拨动开关,自己控制!

就像是程序员突然有了核心框架,核心组件,配置式编程;

大部分,或者全部的事情在框架,组件,或者配置中已经包括了;

需要修改时,只针对 产品进行变形修改——而不是修改生产线!

我看到的很多朋友,都冒似还在针对具体业务写代码

——当然,这是必然的:再厉害的架构师,毕竟也很难将 人类 和 岩浆 这两种东西联系起来,且抽象出公公属性和方法!

(当然,人类和岩浆的 共同点是,都可以运动,都可以发热,都有生命周期)

就是说,有些不能抽象的东西,还是要针对具体业务了;

但是,针对某些可以抽象的:

轮子——完全可以将颜色,直径 抽象出来,让用户自己控制的;

很多时候,抽象的力量可以将一切变得如此的简单!

我想,这就非常考验架构师的设计能力了!

架构师给出一个好的框架,组件和配置模式——将可以让程序员的工作变得异常简单,维护也会异常方便!


舒小龙

2012-03-08 10:51

相关文章:

  • 十三款著名跨平台游戏引擎(原文翻译部分转自游侠网)
  • 发个XNA中文字体生成的辅助小工具
  • 教你如何迅速秒杀99%的海量数据处理面试题
  • Android开发性能提升
  • Java游戏源码大礼包(清明有爱强化版)
  • 浅谈STG游戏的开发(4月8日更新,已补全内容)
  • J2me游戏引擎的基本构成
  • 感知世界触景生情——增强现实技术
  • Android游戏源码合集(主要是AndEngine和Libgdx的)
  • 继续群发Android游戏源码(再发15款)
  • (NSDate) 时间 (time )比较
  • CSDN的博客系统比以前快多了
  • Android之AndroidManifest.xml文件解析
  • Android权限
  • Android权限目录
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【699天】程序员高效学习方法论探索系列(实验阶段456-2019.1.19)...
  • EventListener原理
  • express + mock 让前后台并行开发
  • HomeBrew常规使用教程
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • mac修复ab及siege安装
  • vue+element后台管理系统,从后端获取路由表,并正常渲染
  • 对象引论
  • 紧急通知:《观止-微软》请在经管柜购买!
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 入职第二天:使用koa搭建node server是种怎样的体验
  • 手机端车牌号码键盘的vue组件
  • 腾讯优测优分享 | 你是否体验过Android手机插入耳机后仍外放的尴尬?
  • 我的业余项目总结
  • 职业生涯 一个六年开发经验的女程序员的心声。
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • (Redis使用系列) Springboot 使用redis的List数据结构实现简单的排队功能场景 九
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (免费领源码)Java#Springboot#mysql农产品销售管理系统47627-计算机毕业设计项目选题推荐
  • (七)Java对象在Hibernate持久化层的状态
  • (顺序)容器的好伴侣 --- 容器适配器
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转) Face-Resources
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Standard 的管理策略
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .Net 垃圾回收机制原理(二)
  • @Resource和@Autowired的区别
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [.NET 即时通信SignalR] 认识SignalR (一)
  • [2017][note]基于空间交叉相位调制的两个连续波在few layer铋Bi中的全光switch——
  • [20171102]视图v$session中process字段含义
  • [20171106]配置客户端连接注意.txt
  • [ai笔记3] ai春晚观后感-谈谈ai与艺术
  • [Android Pro] AndroidX重构和映射
  • [CSDN首发]鱿鱼游戏的具体玩法详细介绍