我们应该如何对待开源?

news/2024/7/6 4:42:59

前天把SSH全部看完了,拖了很长的时间。从223号开始看的SSH,前前后后用了两个半月。以为一个多月就能看完的。但是总是有很多事来拖慢进度。真的是应了那句话“计划赶不上变化”。

 

SSH是进入java方向的第二个教程了,从第一个的drp到现在的ssh。让自己感觉到了java的世界真的是浩瀚无边。这里特别要感谢一下米老师,如果没有老师的指点,真的很难知道自己要学什么,从那里下手。我也深刻的体会到,一个导师对你的帮助是多么的巨大。明白了很多人学习编程坚持不过来的原因,如果你不知道你该学习什么,等你把所有的东西都了解一遍以后,你会发现你一无所获,而且更为悲伤的是你已经没有时间和精力再去学习了,最后得出的结论就是:你不适合学习这行!

 

下面谈谈学习的感触。

SSH是一个开源的框架,这里重点是在开源上面。也就是这个开源让我这次感触最深。

很早就听别人说java现在很火,为什么很火呢?很多人给我的回答就是java开源,多好啊!

对,java开源真的很好,从进入java就明显的感觉到了,你想要的东西,大家都已经帮你实现好了,很多时候有很多种方案。你只需要拿来用就行。而且还能看到人家的源代码。真的是很惬意。但是很多时候这样的想法错了。

 

错在哪里呢?很多时候人们以为开源就意味着不收费,你可以随便拿来人家的东西,随便用,随便看。这样对吗?如此这样的对待开源。会让我们变得越来越愚昧。你只是方便的拿来了人家的东西,人家的思想呢?你只能一点点的看着人家把版本从1.0升级到n.0。而自己只能在网上从1.0下载到n.0。没有了思考,也没有了进步。

 

这样对待开源当然是不对的,那么怎么对待开源的产品呢?

我本人认为开源既然提供了这么宝贵的机会让我们看人家的源代码。何不用心的研究一下呢?这里的研究不是去看人家是怎么调用的。最重要的是看看他们是怎么编程的。看看大师是怎么编写程序的。

 

1:看看源代码的编写风格,他们是如何对待编程的。对于你经常不注意的地方比如:注释,参数命名,参数类型组织。参考一下他们。


2:看看大师的代码里面是怎么体现面向对象精神的。这一点也是我最提倡的。很多时候我们对外宣称我们用的java纯面向对象的,但是摸摸自己的良心,你在用人家的框架的时候你用到了多少面向对象的东西。我自己发现基本上就是一个继承。我们基本上就是继承人家的一个东西,然后用配置文件声明一下。

真正体现面向对象,体现设计模式的地方。就是大师写的那些框架,他们把面向对象的精神发挥到了极致。这里也许能让你感觉到java真正的精神。


3:如果你有精力,可以去修改一下源代码。按照你的想法去设计。这点才是最高的阶段。就像是一台电脑一样,它出厂的时候是按照大众方式设计的,设计的时候考虑了很多因素。但是如果你买了一个电脑,我相信99%的人不会用电脑原来的系统和设置吧!你的把它调节到符合你的情况。这样才是最重要的。如果你看到那个人一直用着电脑出厂的设置和系统。那么你可以肯定这个人肯定是一个电脑白痴。同理使用开源软件也和这个类似。只不过这个门槛稍微高了一点。


前些天看到淘宝公布了他们的mysql使用方案。当时对我的触动很大,我原来以为大家使用的mysql都是一样的了。现在才知道,对于这样的开源软件。人家用的时候是完全改装过的。而自己是拿来就用。差的很远了。

当然同理可得,大家都在使用ssh框架,你用的和人家用的一样吗?这个你地的去思考。

 

最后,开源真的很好,给了我么站在巨人肩膀上的机会。我们要好好把握。


http://www.niftyadmin.cn/n/3657235.html

相关文章

[概念] 激励理论 - 马斯洛需求层次理论(Maslow's hierarchy of needs)

激励理论中 马斯洛提出了一个5层的需求层次理论,下面的四个层次甚好理解,只是最高层的“Self Actualization"不太明白。有个老师在讲解习题中说”父母没有考上大学,于是全力培养孩子,孩子考了大学,于是乎父母实现…

协同过滤推荐算法的原理及实现

原文链接:http://it.sohu.com/20160323/n441708747.shtml 作者:蓝鲸 ------------------------------------------------------------------------------- 协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。…

单元测试(Unit Test) 之大小

单元测试之大现在,软件行业的人普遍都知道测试驱动开发,知道单元测试,尽管测试驱动开发在实践中存在一些争论,软件项目本身的一些约束条件或者开发人员的编程习惯都可能成为制约因素而不能真正做到100%的测试驱动、写程序先写单元…

[概念] 价值分析(Value Analysis)/价值工程 (Value Engineering)

PMBOK (英 2004 3rd P110) 项目范围管理中的范围定义过程中有一种输入叫做产品分析(Product Analysis),其中提到了的分析工具有价值分析和价值工程,据课堂上老师介绍国内基本把这两种方法当作一种方法,没有区别。google了一下,好像…

Java8特性之接口的默认方法与静态方法

简介 Java 8用默认方法与静态方法这两个新概念来扩展接口的声明。它允许添加新方法到已有接口中,但是不会破坏那些基于老版接口实现的代码的二进制兼容性。默认方法和抽象方法的区别在于:抽象方法是必须要实现的,而默认方法不是。意义 众所周…

NS3概念概述及first.cc讲解

NS3概念概述及first.cc讲解 文章转载自:漫天大雪 一、关键的抽象概念 1.1节点 在因特网术语中,任何一台连接到网络的计算设备被称为主机,亦称为终端。 ns -3是一个网络模拟器,而非一个专门的因特网模拟器,为此我们…

[概念] 属性抽样(attribute sampling)和变量抽样(variable sampling)

PMBOK(2004 3rd 英) P191中提到了质量控制中要注意区分的几个概念,其中提到了属性抽样与变量抽样这一对概念,书上没有详细解释,查阅如下:Attribute Sampling (http://www.answers.com/topic/attribute-sampling?catbiz-fin) :Sta…