程序员怎样迈出从5K到1W的重要一步

为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝;而自己加班加点搞到天亮还做不完。

为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置;而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来。

为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击;而自己的程序bug重重,改好一个却又引出另一个,按下葫芦浮起瓢,几近崩溃。

为什么同样是程序员,大牛工资1W,而自己只能拿区区的3K?

大牛显然知道一些小菜所不知道的秘密,这秘密又是什么呢?

这个秘密就是设计模式。设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。只有精通了设计模式,才敢说真正理解了软件工程。可以说,设计模式是每一个架构师所必备的技能之一。作为一个面向对象设计程序员,只有精通了设计模式,才能完成自身价值从3K到1W的飞跃,才能摆脱码奴的命运,成为一个真正的软件工程师。

提到设计模式,不得不感谢GoF(Gang of Four,四人组),他们1995年出版的《设计模式》一书,第一次将设计模式提升到理论高度,并将之规范化。书中一共总结了23种基本的设计模式。而这23中设计模式几乎涵盖了面向对象设计过程中所有问题的解决方案。书中提到的23种设计模式分别是:

  • 1.单例模式 2.工厂方法模式 3.抽象工厂模式 4.模版方法模式 5.建造者模式 6.代理模式 7.原型模式 8.中介者模式
  • 9.命令模式 10.责任链模式 11.装饰模式 12.策略模式 13.适配器模式 14.迭代器模式 15.组合模式 16.观察者模式
  • 17.门面模式 18.备忘录模式 19.访问者模式 20.状态模式 21.解释器模式 22.享元模式 23.桥梁模式

那么如此多的设计模式又是从何而来呢?《易经》有云:“易有太极,是生两仪,两仪生四象,四象生八卦”,意思就是说世界万物皆有起源。而设计模式的起源是面向对象程序设计思想,是面向对象设计的精髓——抽象。面向对象通过类和对象来实现抽象,实现时产生了面向对象的三个重要机制:封装、继承、多态。正是这三个机制衍生出了各种各样的设计模式。在面向对象软件设计的发展过程中,除了《设计模式》一书中提到的23中设计模式之外,新的设计模式仍然不断出现。

从面向过程到面向对象是软件设计诞生以来的迈出的最伟大的一步,面向对象程序设计成功解决了面向过程软件编程的低效率问题,并且彻底改变了人们的编程思维,为软件设计揭开了新的篇章。然而,要实现面向对象设计,彻底摆脱面向过程设计思维,并不仅仅是只要使用了一门面向对象的编程语言就能够达到的。使用面向对象设计,可以设计出优秀的软件,同样也可以设计出糟糕的软件。只有遵循一些特定的原则,才能设计出复用性高灵活性好的软件来。

在运用面向对象的思想进行软件设计时,需要遵循的原则一共有6个,他们是:

1. 单一职责原则(Single Responsibility Principle)
2. 里氏替换原则(Liskov Substitution Principle)
3. 依赖倒置原则(Dependence Inversion Principle)
4. 接口隔离原则(Interface Segregation Principle)
5. 迪米特法则(Law Of Demeter)
6. 开闭原则(Open Close Principle)

在软件设计的过程中,只要我们尽量遵循以上六条设计原则,设计出来的软件一定会是一个优秀的软件,它必定足够健壮、足够稳定,并以极大的灵活性来迎接随时而来的需求变更等因素。当完全明白这六个原则的含义时,小菜便完成了走向大牛的蜕变。

时间: 2024-10-24 19:50:58

程序员怎样迈出从5K到1W的重要一步的相关文章

迈出从3K到1W的重要一步——掌握设计模式

IT职场的小菜经常有这样的疑问: 为什么一个相似的功能,大牛一会儿就搞定,然后悠闲地品着下午茶逛淘宝:而自己加班加点搞到天亮还做不完. 为什么用户提出需求变更后,大牛只需潇洒地敲敲键盘,改改配置:而自己将代码改了又改,删了又建,几乎晕厥,最后只能推翻重来. 为什么大牛写完的程序测试上线后,几乎完美运行,用户无懈可击:而自己的程序bug重重,改好一个却又引出另一个,按下葫芦浮起瓢,几近崩溃. 为什么同样是程序员,大牛工资1W,而自己只能拿区区的3K? 大牛显然知道一些小菜所不知道的秘密,这秘密又是

【转载】php程序员:从1.5K到18K 一个程序员的5年成长之路

昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总结也是本着一种分享的态度, 希望相比我还年轻的同学们, 可以从中找到一些让自己成长更快的文字. 先介绍下背景:1. 2008年3月开始学习编程, 目前2013年3月;2. 2009年6月计算机专业本科毕业;3. 大学期间, 基本稳拿班级倒数第一, 高考英语49分, 大学英语除了补考没及格过.接着,

程序员工资高从不炫富?网友:是你看不懂人家炫!

月薪几K,你才敢腆着脸对你女票说一句:我养你啊.就像段子里所说,在这个物价飞涨的时代,只有我们的工资以不变应万变,而"月薪多少"永远都是人们津津乐道的话题. 赚的少了,自己都养活不了,只能注孤生.赚的多了(其实并没有人会嫌自己赚的多),大部分人当前的目标都是赚的更多. 可由于社会分工不同.各行各业的收入差距还是很大的,比如说程序员,平均起薪在1W以上,完全就是中产阶级.奔小康的节奏啊.即便这样,却很少有人发现他们炫富,这是为什么呢?看了下面这些程序猿的回答就会知道. 1.程序员大多追求

从1.5k到18k, 一个程序员的5年成长之路

http://blog.csdn.net/lgg201/article/details/8637763 昨天收到了心仪企业的口头offer, 回首当初什么都不会开始学编程, 到现在恰好五年. 整天在社区晃悠, 看了不少的总结, 在这个时间点, 我也写一份自己的总结吧. 我一直在社区分享, 所以, 这篇总结也是本着一种分享的态度, 希望相比我还年轻的同学们, 可以从中找到一些让自己成长更快的文字. 先介绍下背景:1. 2008年3月开始学习编程, 目前2013年3月;2. 2009年6月计算机专业

月薪5K左右的程序员该不该去接私活?醍醐灌顶的答案!

提问: "本人是一名二线城市的普通程员,工作五六年了,换过四五次工作,因为各种原因,现在只能算公司的一名主力程序员,没有步入管理层收入,5k多的样子,穷diao丝一个,现在的收入,已经严重不足以应付花钱越来越多的生活.晋升?感觉阻力重重,跳槽?收入差不了多少,做兼职?这个没有做过.不过现在想来,做点私活是增加收入最实际的出路.近尔立之年,我有点迷茫!" 回答1: 程序员做"私活"是最要不得的,因为这对提升自己的价值毫无帮助.仅从技术角度来说,程序的小模块的私活没什么

程序员其实也有感情的,不是我们无情,是您关怀不够。

跳槽除了为钱还有其他因素:你是为了钱而跳槽呢?还是为了快乐而跳槽? 在如今的互联网行业,特别是是软件开发的岗位,大都信奉一句话“跳一次,工资涨一倍”.可能这话有点夸张,但是基本来说你跳一次巢工资坑定会长不少. 在大多数老板的心理就不爽了,觉得现在的人为了工资经常跳. 如果一个给1w一个给5k,那肯定是选择1w.那如果一个6k但是你在哪干着不愉快,一个5k但是你过着很快乐.不知道您选哪一个,反正我是选择了后者. 其实有的时候不是您的员工想跳槽换工作,有时候是您逼的,当一个公司特别是出现老员工大量主

OSChina 周六乱弹 —— 我就喜欢程序员 (多图慎入)

今天你睡懒觉了吗? NO--小小编为了发乱弹,早早的离开了被子君,这不乱弹整理出来了.万能的OSCER们,要是你们能写一个自动生成乱弹的程序给小小编,小小编会很稀罕你的. 据说程序员是这样子来的 @OscerFan :你爸我当年在草原,渴了喝露水,饿了吃蚂蚱,让你知道,不是所有的猿都叫程序猿. 是,由于你们太特殊了,大家都只能这样子和你们交流了 @开源中国首席动弹师 :产品经理运营程序员美工们!快来对号入座! <span  "> 即使这样子的受diao,被虐千百遍,猿媛们也还是把最美

程序员薪资 如何分配,如何增长

自从2011年初,CSDN在网上发起的"2011年软件行业技术人员薪资大调查"以来,获得了广大网友的热烈反响,短短两个月时间内,上万名技术开发者提交了调查数据.尽管这还只是中国百万开发者大军的一小部分,但他们所在的行业几乎涵盖了整个中国软件的产业链,他们的职位几乎代表了一个软件团队体系的每一个层面,而且"一叶知秋",同时,透过这些调查数据和变化,我们或许可以一瞰中国软件开发者的普遍生存状态,甚至可帮助开发者,更准确地定位自己在产业内的坐标. 2011:程序员的日子不

为什么国外程序员爱用 Mac?

from http://www.vpsee.com/2009/06/why-programmers-love-mac/ Mac 在国外很受欢迎,尤其是在 设计/web开发/IT 人员圈子里.普通用户喜欢 Mac 可以理解,毕竟 Mac 设计美观,简单好用,没有病毒.那么为什么专业人士也对 Mac 情有独钟呢?从个人使用经验来看我想有下面几个原因: 1.Mac OS X 是基于 Unix 的.这一点太重要了,尤其是对开发人员,至少对于我来说很重要,这意味着Unix 下一堆好用的工具都可以随手捡到.