软件研发的轮回
我们现在正在经历软件研发的轮回,一方面我们在维护着越来越糟糕的软件,不断对自己说,下次开发新的软件时,一定要好好设计,规范编码;但另一方面,当我们真的开始一个新的项目时,却举足无措、千头万绪,不知道该怎样去分析与设计,一切只有靠经验,以及那些不可捉摸的灵光一现。最后,当软件经历了几轮需求变更和维护以后,我们被打回了原形,甚至那最后的一块遮羞布都不曾保留。软件重新回到了那种糟糕与难于维护的状态,多么令人沮丧啊。
我们为什么总是在这样的软件轮回中挣扎呢?回答这个问题,我自认为比别人体会更深,因为在过去的十年时间里,我读了更多别人的代码,维护了更多别人开发的系统,可谓是阅人无数。我总是在分析这些设计的问题,优化这些糟糕的系统,使它们越来越易于维护。总体来说,我感到,我们太缺乏对软件设计理论的研究了。
其实我想说,中国的软件之所以总是不能提高,那是因为中国的程序员都在关注那些新技术,海侃那些新概念,海搜那些新框架。试问,有多少人不知道spring、hibernate开源框架?有多少人没有聊过ISO、云计算、BI?还有那些一版一版的JDK,各大公司的新产品发布……然而,我们那些基本的软件设计编程理论却常常被人淡漠,甚至是不屑一顾。在被我面试过的无数人里,很少有人能说得清楚什么是工厂模式(仅有的模糊认识都来源于大学时代的教科书),甚至从来没有写过一个工厂。什么是开放-封闭原则?什么是单一职责?怎样运用建模技术来分析和规划我们的系统?
难怪有网友感慨,开发程序多年,其实就是在拼凑各种开源框架,成了开源框架的组装工人,这就是我们的业态。而所谓的系统架构师,就是特别能搜、特别能拼、特别能侃的那一类人。还有那些刚刚踏出校门的同学们,满腔热情地投身IT洪流中,却被那些新概念搞得头昏脑胀、无所是从。没人告诉他们应该怎样去编程,怎样才能编好程,编写优秀的代码。
这就是软件研发轮回的本质:我们太缺乏对编程理论的关注,关注的没有学明白,想问的却找不到老师。所以,我说,我们大家静心坐下来,进行一次软件编程技术的探讨之旅吧。嗯,我想,就从最基本的面向对象开始吧。
一次软件编程技术的探讨之旅
重新理解一切皆对象
重新审视代码复用
(续)
分享到:
相关推荐
《游戏之旅—我的编程感悟》不仅仅是一本技术指南,更是一本关于成长与探索的书。无论是对于游戏开发者,还是对编程感兴趣的初学者,都能从中获得宝贵的启示与灵感。云风用自己的经验和智慧,为读者描绘了一幅丰富...
《游戏之旅-我的编程感悟》一书,作为深入了解游戏编程领域的佳作,由网易技术专家精心撰写。这本书不只是一本技术手册,它更是作者对编程世界深刻感悟和经验积累的总结。正如标题所示,它如同一场旅程,带领读者从...
### 轻松Scrum之旅知识点详解 #### 一、背景与起源 - **软件危机加剧**:随着软件系统的日益复杂,...通过上述知识点的详细解释,我们可以更全面地理解《轻松Scrum之旅》一书的核心内容及其对敏捷开发实践的重要意义。
《C++网络编程,明日之旅-CWSS》深入探讨了C++在现代网络编程领域的应用与挑战,并提出了一种创新的解决方案——CWSS(C++ WebService Server)。本文将全面解析CWSS的设计理念、核心优势及其对C++网络编程领域的...
### 主流编程技术之C++ #### 一、引言 本教材是一本经典的国外IT教材,专注于介绍C++编程语言的基础及其高级特性。教材内容丰富、真实可靠,并且极具科学性,非常适合C++编程初学者作为学习和研究的参考资料。 ##...
《游戏之旅——我的编程感悟》一书不仅分享了作者的个人经验和心得,也涵盖了游戏开发领域的重要知识点和技术趋势。通过对这些内容的深入探讨,读者不仅能学到实用的编程技巧,还能从中汲取灵感,更好地理解和应对...
在信息时代,编程技术人员的知识更新...这个书单只是一个起点,它能够为你的学习之旅指引方向,但真正的提升还需要你持续的阅读、思考和实践。记住,书籍是知识的海洋,而你正是一艘扬帆起航的船,不断探索未知的领域。
在市场定位上,《天道之旅》不仅仅是一款游戏,它是一次文化体验。策划案分析了目标用户群体,这些用户是那些对于东方幻想题材充满热情,喜欢PVP对战和角色扮演的玩家。为了确保游戏能够在市场中脱颖而出,策划案...
《C语言高级编程技术》是一本深入探讨C语言精髓与高级技巧的著作,对于渴望提升C语言编程能力的读者来说,无疑是一本极具价值的参考资料。...无论是对初学者还是有经验的开发者,这本书都将是一次富有收获的学习之旅。
在本节"Windows游戏编程之旅(七)"中,我们将深入探讨如何利用定时器来实现图片的序列播放,从而创建出类似动画的效果。这一过程涉及到多个核心知识点,包括Windows消息机制、定时器的使用以及图片资源的管理。 ...
在这个"ASP.NET AJAX客户端编程之旅"的压缩包中,很显然,我们将探讨如何在客户端使用ASP.NET AJAX进行高效的开发。 1. **基本概念** - **AJAX**:AJAX不是一种单一的技术,而是多种技术的集合,包括JavaScript、...
在“神奇的匹配 正则表达式求精之旅”中,我们将深入探讨这一技术的奥秘,揭示其在数据查找、提取、替换等方面的功能。 正则表达式的核心在于模式匹配,通过特定的字符组合来定义一个搜索模式。这些模式可以是简单...
在"网站开发非常之旅ASP(网络编程从入门到精通)"这本教程中,我们将深入探讨ASP的核心概念和技术,助你从初学者逐步成长为精通ASP的专业开发者。 首先,我们从基础开始,IIS(Internet Information Services)是...
在Windows游戏编程之旅的第四部分,我们探讨了关键的贴图技术,这是任何游戏或图形应用程序不可或缺的一部分。贴图技术让游戏世界变得丰富多彩,通过在2D或3D表面上应用图像,赋予游戏对象以视觉真实感。在这个环节...
《老罗Android之旅》是一套全面讲解Android技术的教程,主要涵盖了Android系统的基本概念、专用驱动、安全机制以及应用程序UI架构等多个重要知识点。通过这套课程,我们可以深入理解Android开发的核心要素,提升自己...
《苍蟒——灰帽Python之旅》是一本深入探讨Python编程技术的书籍,尤其注重安全方面的实践应用。在51CTO下载平台,你可以找到这本书的电子版资源,它以.zip.rar格式提供,便于用户下载和解压。在这个压缩包中,包含...
对于"Windows游戏编程之旅(八)"这个主题,我们将关注消息定时器,因为它更适合简单且对实时性要求不那么高的游戏应用。以下是创建消息定时器的基本步骤: 1. **创建定时器**:调用`SetTimer`函数,该函数需要指定...
在“Windows游戏编程之旅(十)”这一章节中,我们将探讨如何在游戏中实现冒泡排序算法以及如何模拟怪兽的自由移动。这两个主题都是构建动态、交互式游戏的关键组成部分。 首先,让我们来深入理解冒泡排序。冒泡...
根据提供的文件信息,“C++实用编程技术百例精编与妙解”这本书旨在通过一系列精心挑选的示例来提升读者的C++编程技能。接下来,我们将深入探讨几个关键的知识点,这些知识点通常会在该类书籍中被重点介绍,并且对于...
《LINUX系统分析与高级编程技术》是一本深入探讨Linux操作系统的权威教程,涵盖了系统分析、内核理解以及高级编程技巧等多个方面。该压缩包文件包含的资源旨在帮助读者掌握Linux核心概念,提升编程能力,并深入理解...