从菜鸟腾飞至专家(我的心得)

天就要大过年了,今天还在公司上班,闲着没事,在这里说下自己的心得. 如果你还是一名菜鸟,或者你才接触程序不久,我建议你看下去. 对于程序员来说,不论你采用何种语言,那都是次要的,不论你开发的是桌面应用程序还是WEB应用程序,那也是次要的,好的思想胜于具体的语言,好的程序架构胜于具体的运用类型,所以编程方面,没有什么最好或者最差的编程语言,不要认为你是学习Java的,你就认为.NET如何如何不好,也不要因为自己是.NET的拥戴者,你就嘲讽Java的如何如何,这个世界,没有什么事情是绝对的,如果你硬要说绝对的化,那么唯一的绝对,那就是每个人都会死.(别钻牛角尖了,这里不是想讨论这个,分享经验和思想而已)每种语言都有自己的特性和优劣,根据具体情况做选择,才是一名优秀的程序员才应该具备的.也不要因为你喜欢开发桌面应用程序,而嫌弃WEB应用程序如何如何,更不要因为你是开发WEB应用的,就喜欢说桌面又如何如何,桌面和WEB又有什么不同呢?我不知道各位是怎么想的,各位处在何种境界考虑这个问题.就我而言,以程序的分析方法来说,程序就是一个抽象类,然后从这个抽象类从派生处了具体的应用程序类型,所以不论是WEB还是桌面,乃至是PDA以及手机,开发思想都是一样的,运用良好的分层框架设计,一套代码,可以运用在许多种类型的运用程序上,所以现在的程序没必要分的那么严格了. 再来就是说下理论与实践吧,我不知道大家这么看待这个问题,我教导的一位朋友(现在还在读大学,今年毕业).和他说到这个的时候,他跟我说,他还是喜欢多练习,练习多了.他自然就会了,关于理论什么的,那些太模糊了,不如实践更容易理解.还有我曾经帮助的一位厦门大学的朋友.她曾经问过我许多问题,我都给了她解决方案,并接从原理到步骤中进行了详细分析.她问我写了多少程序,我说我没写多少,只看数.她居然说不实践成长不了的.我当时觉得很可笑吧.但是没说什么,对于任何事情来说,实践固然重要,也应该是非常重要的.但是理论更加的重要,好的实践的基础离不开坚实的理论基础,试想下,我是没亲自去敲代码,但是如果我能把一个程序,从开始运行到最后结束,每行代码都说出来,你认为我能不能写出这个程序了.实践不能让你的水平有所提高的,它所提高的只是你的开发效率,以及记忆程度,如果你提高技术能力,理论还是绝对重要的.不要给自己找理由,强化理论基础,加强使用技巧经验才是王道. 再者就是开发观念,建议明白下你所使用的语言究竟是什么语言,不要自己认为自己懂的,我曾经看到过许多团队的开发人员,使用.NET开发网站,那代码真的写的让我佩服的想哭了.烂的可以了,不要因为你使用的是面向对象语言,你就认为自己是在做面向对象设计与开发了,这种思想是极度错误的.关于面向对象的三大特性:继承,,封装,多态.你自己好好问下你自己,你究竟了解多少,你在实际中又就将考虑了多少.面向对象的三大特性,使用起来确实不会让你的程序书写起来更加的容易,它可能使你原来很简单的一个程序难度提高2-10倍,甚至更多,但是这种设计上的付出,收获也是巨大的.关于这三个特性,最好的组合就是设计模式的运用,良好的设计模式的使用使得写出来的代码优美,可复用性高,易扩展.对于设计模式,也别觉得有什么困难的,所谓的设计模式也就是一种开发思想而已,很简单,记住良好的软件的5大原则:单一职责原则,开闭原则,依赖倒转原则等,再配合已经存在的23种设计模式,根据具体情况分析选择设计,举一反三就可以了.不要因为这样麻烦,就不这么去考虑问题,如果你只想继续当菜鸟,那我没什么好说的.毕竟各人追求不同.我记得曾经面试一个公司,我带这自己的作品去面试,看了一眼他们的软件开发代码,我无语了,面向过程开发用的好熟练,程序员的CV功夫也运用的很熟练,后来我再介绍自己的代码的时候,结果批评了他们那么做的缺点(结果不用说你们都知道了,当然是没戏了,但是不管怎么样,提高自己的技术修养和思想还是蛮重要的)。 2009年会如何,很难说,但是可以肯定的一点就是,我会成功的转型为一名软件架构师。在这里献上自己的点点看法和心的。其他的就不多废话了,毕竟每个人的看法都不一样,我也无法明白别人怎么定位,但是我知道自己对自己的要求,理论越强大,思考的越多,看到的方法越多,所能想到的解决方案也就越多。也就越接近更高的境界了。 最后我分享下自己认为的最好的数据库辅助类的写法。(如果大家有什么更好的方法,欢迎跟帖。对于学习,我时刻都在更新自己的经验和技术) 1 对于实际开发而言,一般都会写一个数据库的访问类。(注:这个数据库访问类不是数据访问层哦,而是基本的数据访问方法) 大家都知道ADO.NET为开发认为提供了4种的提供程序,分贝是MS SQL, OLE DB...等。然而在大多数情况下许多开发人员都喜欢在只写定一种,其实这样设计的代码可复用性很地的。如下: public staitc class DataAccess { private static readonly string _ConnectionString; //数据库的连接字符串 static DataAccess() { _ConnectionString = ConfigurationManager.ConnectionStrings["Config"].ConnectionString; } public static SqlCommand CreateCommand() { SqlConnection connection = new SqlConnection(_ConnectionString); return connection.CreateCommand(); } public static DataTable ExecuteCommand(SqlCommand command) { DataTable table = null; try { command.Connection.Open(); SqlDataReader read = command.ExecuteReader(); table.Load(read); read.Close(); } finally { command.Connection.Close(); } return table; } ///...下面更多的方法省略 } 这么写的化,我们不能说写错了,但是这么写,如果数据库改成MySQL或者别的什么了,那么我们就必须为新的程序再写一套程序代码。这样子程序的复用性就显得非常的低,大家要明白,ADO.NET为我们提供了一套统一的编程模型,这个时候我们可以考虑使用设计模式,借助类的三大特性来改写下以上的代码,这样子,我们的程序就更容易适应变化了,改写的代码如下: public class DataAccess { private static readonly string _ConnectionString; private static readonly string _ProviderName; static DataAccess() { _ConnectionString = ConfigurationManager.ConnectionStrings["Config"].ConnectionString; _ProviderName = ConfigurationManager.ConnectionStrings["Config"].ProviderName; } public static DbCommand CreateCommand() { //利用抽象工厂模式来声场具体的提供程序生成工厂类 DbProviderFactory factory = DbProviderFactories.GetFactory(_ProviderName); //利用具体的提供程序工厂生成对象生成具体的对象 DbConnection connection = factory.CreateConnection(); return connection.CreateCommand(); } public static DataTable ExecuteCommand(DbCommand command) { DataTable table = null; try { command.Connection.Open(); DbDataReader read = command.ExecuteReader(); table.Load(read); read.Close(); } finally { command.Connection.Close(); } return table; } ///...下面更多的方法省略 } 以上合理的运用设计模式,借助继承和多态来实现,这样子在以后即使数据库变了,我们只需要修改下配置文件就可以了,代码的重用能力得到的很大的提高。关于那两个工厂类,大家完全不需要自己实现了,NET中已经为我们提供了这两个类,但是想要弄清楚这两个类的实现原理,就必须明白类的继承和多态以及工厂模式,在这里。我就不具体分析了。 因为实践的关系,更详细的写法,我没有写出来,只做一个介绍,大家自己扩展。如果各位有更好的方法,希望交流,我掌握的还是蛮多和精炼的,欢迎赐教和讨论。

转载于:https://www.cnblogs.com/y0umer/archive/2009/06/23/3839488.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要成为一个Python的大牛,需要通过一系列实战经验来不断进阶。 首先,我们需要从菜鸟开始,学习基本的语法和常用库。掌握Python的基本语法、变量、数据类型、条件语句和循环语句等是必不可少的。此外,还要熟悉常用的Python库,如NumPy、Pandas和Matplotlib等,这些库在数据处理和可视化方面都非常常用。 接下来,我们需要通过实战来巩固所学的知识。可以选择一些小项目来实践,比如编写一个简单的Web应用、爬取网页数据或者创建一个简单的机器学习模型。通过实际应用,可以提升对Python的实际运用能力。 在实战过程中,我们需要积累并解决一些常见的问题。这些问题可能涉及到代码的优化、调试、性能优化等方面。通过解决这些问题,我们可以提升自己的编程能力,并且学会更高效地利用Python来解决实际问题。 另外,为了进一步提升自己的水平,可以参与开源项目或者自己创建项目。通过参与开源项目,可以学习到更多高级的编程技术和实践经验。同时,创建自己的项目有助于锻炼独立思考和解决问题的能力。 除了对Python语言的掌握外,我们还需要了解相关的领域知识。比如,在数据科学领域,需要学习统计学、机器学习和数据挖掘等知识。通过将Python与领域知识相结合,可以在相关领域中发挥更大的作用。 总而言之,成为一个Python的大牛需要不断地实践和学习。通过不断地积累实战经验,掌握并解决常见问题,参与开源项目或者自己创建项目,同时结合相关领域的知识,多角度地深入学习Python。这样的进阶之路需要耐心和毅力,但最终将能够取得令人骄傲的成果。 ### 回答2: Python是一门广泛应用于软件开发和数据分析的编程语言,具有简洁易学、功能强大的特点,因此非常适合初学者入门。然而,要想从菜鸟到大牛,需要不断拓展知识,提升技能。 首先,要全面掌握Python的基础知识,包括语法、数据类型、条件语句、循环语句等。可以通过阅读相关书籍、教程、参加培训班等方式进行学习。 其次,理解面向对象编程(OOP)是进阶的关键。Python是一门支持OOP的语言,掌握面向对象的概念和用法可以使代码更加模块化和可重用。可以通过练习编写类和对象,深入理解继承、封装和多态等概念。 另外,掌握Python标准库和第三方库也是提升的必要条件。标准库包含了许多常用的模块和函数,如操作文件、网络编程、并发等。同时,第三方库可以满足更具体的需求,如数据分析(NumPy、Pandas)、机器学习(Scikit-learn、TensorFlow)等。可以通过实践项目和参与开源社区来积累经验和熟悉常用的库。 此外,代码优化和性能调优也是进阶的一环。良好的代码结构、规范的命名和注释可以提高代码的可读性和可维护性。同时,了解性能优化的技巧和工具可以提高程序的执行效率。 最后,实际项目经验是从菜鸟到大牛的关键。通过实践解决真实的问题,遇到的挑战和解决方案都可以让你不断成长。可以自己找项目实践,也可以参与开源项目、参加比赛等方式来积攒经验。 总的来说,进阶的过程需要坚持不懈的学习和实践,并且保持持续学习的动力。不断总结和思考,参与开源社区和技术讨论也可以获得更多的启发和帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值