精华内容
下载资源
问答
  • 如何提高编程效率

    2015-09-04 07:12:32
    阅读英文资料 对于全栈工程师来说,遇到问题时常常会求助搜索引擎,尤其是在学习新的编程语言,或者学习某个框架的新版本的时候。这是最快速的方案,在很多时候比看官方文档还有效。有的时候我们只是想快速了解一个...
        

    阅读英文资料
     对于全栈工程师来说,遇到问题时常常会求助搜索引擎,尤其是在学习新的编程语言,或者学习某个框架的新版本的时候。这是最快速的方案,在很多时候比看官方文档还有效。有的时候我们只是想快速了解一个新的技术,或者快速上手,这时候也会用到搜索引擎。
    为什么我推荐使用英文,而不是使用中文搜索,有这样几个原因:

    英文的技术资料更多
     在全世界范围内,IT工程师普遍使用英文(即使中国工程师的数量也许更多),于是用英语写作就有了最大的读者群,然后有更多的人用英语写作……。
    在Google中用英文搜索技术问题,往往能得到很详细的说明,以及相应的代码示例。有的时候您会进入英文维基百科,里面有关于词条的详细解释,包括历史、版本、理念、竞争者,等等。有的时候您会进入一个教程(tutorial),里面会详细介绍完成一个任务的整个流程,甚至还可能贴心地提供工程示例文件的下载,这是新手学习的最好方法。

    StackOverflow有完善的鼓励机制
     内容筛选机制、严格的内容把关政策,这让Google的内容质量很高。如果您键入的关键词足够多,那么您很有可能看到很多StackOverflow的问答链接。
     StackOverflow是一个与计算机编程相关的问答网站,也是最大的IT工程师平台。在这里有很多知名开发者,由于有完善的系统鼓励政策,他们都很热衷于回答其他开发者遇到的问题。用户可以在网站免费提交问题,浏览答案,赞同或者反对答案。StackOverflow是一个英文网站,所有用户都必须用英文提问和回答问题。很多时候,在一个问题下都会有多个回答,有经验的用户可以赞同或者反对其他人的回答,新手可以根据每个回答的赞同数来判断回答的可靠性。
     关于StackOverflow,还有一点题外话。StackOverflow由两个世界著名的博客作者共同创建,Jeff Atwood和Joel Spolsky。Jeff Atwood提出了著名的Atwood定律:“任何能够用JavaScript实现的应用系统,最终都必将用JavaScript实现。”JoelSpolsky可能是软件工程师中写博客最有名的一位,他是“Joel on Software”博客的作者,读者人数可以排进全世界前100名。两位创始人对工程师心理有着深刻的洞察,包括追求荣誉感这一特点,所以他们设计的StackOverflow的鼓励机制,取得了巨大的成功。

    Google的搜索能力非常强
     Google在搜索引擎方面的技术实力可以说是绝对领先,它比排名第二的搜索引擎的技术实力和用户体验要强一大截。我曾经对比了大量词汇在不同搜索引擎中的搜索结果,有时候差不多,有时候差别很大,Google总是好得多。所以即使您要搜索中文问题和词汇,也仍然建议使用Google。

    英语世界的语言风格比较严谨
     中文互联网世界上的语法一般比较口语化,而且不太在意语法正确性和逻辑的严谨性。在整篇文章的行文和逻辑构建上,英文也往往更严谨。
    如果您的英文不够好,没有关系。在长篇的英文技术文章或者StackOverflow中,写作者都会有意使用最简单的词汇和语法。如果您能编程,您就能理解这些简单的英文

    时间管理四象限
     一个领导说过,如果您平时没有做重要的事情,就会发现自己常常在做紧急的事情。如果您平时没有注意锻炼身体,就会常常去医院,花费更多时间。如果没有培养后辈,为每个项目设置接班人,就会常常需要到处救火。如果您没有配置好版本管理系统就开始工作,就会浪费更多时间去找回丢失的代码。如果偷懒硬编码(hard code)了一些变量在代码中,后续一定会花费更多时间去调试。时间管理四象限将我们平时需要做的事情分为4类:重要而且紧急、重要但不紧急、不重要但紧急、不重要而且不紧急。

     时间四象限教我们把不同的事情分在不同象限之中,然后采用不同的处理方法。
    第一象限是重要又紧迫的事情。比如线上出现严重bug、服务器出现安全漏洞、用户的投诉,等等。对于这些问题,是考验自己的经验和判断力的时候,用自己最好的判断力,立即执行。不过也要意识到,在这一象限的问题往往是第二象限的问题没有制定好的计划而滑落过来的,如果大部分的工作都落在第一象限,说明还是在“瞎忙”。

     第二象限是紧急但不重要的事情。比如会议、一些可转交的需求,等等。这种事情往往会由于对方强烈的呼声让您认为它处于第一象限,有一种“这事很重要”的错觉。我们花很多时间在这里打转,其实只是在满足他人的需求,而没有关注自己的职责。对于这种事情应该请他人代劳,不一定是自己的下属,还可以是平级的同事。有一些会议不一定需要自己去参加的,可以提前跟主持人(项目经理)沟通。

     第三象限是重要但不紧急的事情。比如一些线上体验优化计划、团队的长期发展方向和个人培训等。有一次老板提出了线上的一个体验问题,我们以为这是第一象限的问题,马上执行。结果老板说,这个事情不需要您们这么快去执行,希望可以做深入一点的调研。建议工程师把80%的工作投入到该象限中,避免“瞎忙”。

     第四象限是不重要也不紧急的事情。逛论坛、刷朋友圈就属于这一象限。简而言之就是浪费生命,所以根本不值得花半点时间在这个象限。但我们往往在一、二象限来回奔走,忙得焦头烂额,不得不到第四象限去疗养一番再出发。所以我们要避免浪费时间在第四象限,也不要疲于奔命,各处“救火”。
    有时候我们以为是外部原因让我们分神,其实更重要的原因是人的精力被耗尽了。我们在一些以为是消遣和休息的活动上投入了很多时间(比如刷朋友圈、玩游戏),回到工作的时候,并没有感到重返工作的舒畅,反而精力涣散,容易分神。我们身体上的劳累让我们的精力无法集中。

    消除重复工作
     重复的工作应该交给计算机去干,这是我们都知道的一个道理。
    有趣的是,我们往往不知道我们的时间花在哪里,有一个办法就是详细地记录自己一天的时间消耗。在合并代码上面花费太多时间?还是提交测试?发布流程繁琐?编译太久?切图的工作枯燥无味?
     第一步便是识别出自己的时间花费在了哪里,以此作为优化的目标。
     有了优化目标之后,第二个思考的问题是,能否使用已有的工具——免费的或付费的——来无缝衔接在已有的流程中。如果新的流程成本太高,那就无法有效推进。普通工具可以用英文在GitHub上搜索相关的关键词,前端开发者可以在Gulp和Grunt社区寻求帮助。
    如果不能使用已有的工具的话,就要自己去编写了。在语言的选择上可以从几个角度考虑:工具的使用者是谁?如果需要分发给同事安装,那么他们使用什么系统?Windows还是OSX?如果使用Web来作为用户接口,那么就可以使用任何您喜欢的语言。用脚本语言开发小型工具非常快,无需编译即可运行。Paul Graham在《黑客与画家》里面就提到过他使用Lisp语言来快速开发的经历。
     给自己留出不被打扰的时间
      当我们被QQ、微信、RTX、电话等提示工具打扰时就会频繁分神,这使得专注力如今已成为稀缺资源。
     Paul Graham在一篇文章中说过,创作者的时间计划与经理的时间计划是非常不一样的。工程师作为创作者,遵循创作者的时间计划。编写程序需要大量的精神投入,需要整块连续的时间思考,所以工程师工作时是不希望被打扰的,若思路被打断则后果很严重。
    Facebook的每周三是没有会议的日子(No Meeting Wednesdays),每一个团队成员都知道,除非万不得已,不要在这一天安排任何会议。事实证明这对团队的效率很有好处,它鼓励所有人(包括产品经理)成为“做事情的人”而不是“计划事情的人”,而且所有人都有一整块的时间工作。对于远程工程师来说,还可以选择在家里工作,根本不用出现在办公室。

    番茄工作法
     有些时候,我们没有办法得到一整天的大块、连续的工作时间,为此可以采用短迭代的工作方法,高效地利用每一小块的工作时间。
     我在跟Facebook的工程师聊天的时候,发现他们都很注重锻炼身体,每天早上开始工作之前都会花一个小时跑步和健身,然后洗澡吃早餐,再开始一小段高效的工作时间。下午的工作时间中也会穿插一些运动和甜点时间,等等,不会像国内的工程师们,需要长时间地坐在电脑前。这种状态的转换让他们的效率得到了很大的提升。所以包括腾讯在内的一些国内公司现在也开始把健身房和团队运动作为一项员工福利,有时候还会组织晨跑或者徒步等团体运动。
    番茄工作法”是由弗朗西斯科-西里洛于1992年创立的一种微观时间管理方法。使用番茄工作法,选择一个待完成的任务,将番茄时间设为25分钟,专注工作,中途不允许做任何与该任务无关的事,直到番茄时钟响起,然后在纸上画一个X,短暂休息一下(5分钟就行),每4个番茄时段则多休息一会儿。
     番茄工作法极大地提高了工作效率,还会有意想不到的成就感。为什么25分钟是一个比较好的时间点?因为如果过短,思维还没有恢复过来,就马上要被打断,不利于创作。番茄工作法主张在25分钟时间段内专注地完成高质量的工作,接着是5分钟的休息。如果让压力系统一直工作,而不借助心智休闲进行调节,一些症状会找上门来。

    跨界思考
     有时候项目会频繁变动,从A计划临时转变成B计划,然后再回到A计划的事情屡见不鲜,这是浪费工程师精力的最大因素。
     从项目的角度来讲,也许这是好事情,谁也不希望把不好的产品发布出去。每个人都希望自己做的产品能够成功,但是不是做重复的脑力劳动。归根结底,是双方在沟通的过程中充满了障碍,不同岗位的人的思考问题的方式不同。
     设计师们是典型的浪漫主义者,他们的世界里没有公式、没有定理、永远没有标准答案,更多的是用发散的思维去构思创意,更容易产生好想法。而工程师注重逻辑的严谨性、技术的可行性,他们往往用“我是否能够做到”和“我要花多少时间才能做到”这个思维在思考。
     那么这种矛盾如何解决?在初级设计师和初级开发者之间,我们鼓励他们频繁沟通,把自己的想法用对方能懂的语言说出来。在高级设计师和高级开发者之间,界限就没有那么明显了,我鼓励他们帮对方做一些工作。这说明什么呢,沟通固然重要,跨界学习更加重要!当双方带着完全不同的思路去讨论一个话题,讨论出来的结果必然是双方妥协的产物,而不会是最优的结果。
    很多工程师都向往国外大公司的“工程师文化”。为什么?因为“工程师文化”代表了工程师是产品开发中的强势方,在跟产品和设计师的沟通中有更多的话语权(甚至某些产品跳过设计师和产品经理)。但是我认为,这是因为国外的工程师有更高的跨界思考能力,才得到了自己的投票权。很多工程师主导的项目,界面不华丽,但是可用性都非常高。这就是跨界能力带来的另一个好处,可以做一个“产品创作者”。
     过去跨界学习的成本很高,大部分人都不敢轻易尝试。但如今互联网时代给我们带来了机遇,每天上网都可以看到其他领域名人写的文章和微博,通过查看这些内容,我们就能对原本完全陌生的领域有一个感性的认识。时间一久,我们就能够在潜移默化中理解另一个领域的从业者的思维方式,当您开始跨界学习之后,就会增加更多的机会.
     我在工作的这几年中也在渐渐受到设计师和管理者的影响,开始学习设计师和管理者的思维方式,所以有时候我被认为是“有一点设计感觉的工程师”,但我仍在学习。或许每个工程师会在不同的环境中跨不同的界,但是在未来,我认为跨界出来的那部分能力才真正定义了“您”。
    纸上头脑风暴
     我使用过很多工具,比如MindMap类软件,或者简单的记事本软件、手机上的绘图软件等。最终,我的经验是,在电脑上工作之前,先在纸上画出自己的想法。笔跟纸是最灵活、最容易修改、成本最低的头脑风暴方式。
     比如在写一篇文章前,就可以先画一个思维导图,把头脑风暴出来的所有关键词都列出来,然后再根据金字塔式的写作方式层层分解。如果是开发一个软件,或者写一个脚本程序,可以把每一步的主要工作都写下来,类似伪代码,但是抽象层级更高一点。

    使用版本控制和构建系统
     数据表明,对于没有使用版本控制工具的工程师而言,浪费在代码合并、版本回溯以及bug修改上的时间远远超过了使用版本控制工具的工程师。所以,这是针对所有人都适用的建议,尽快使用版本控制工具。
     好的构建系统可以让工程师完全从枯燥的操作中解脱出来。在极端情况下,不使用构建系统的工程师可能要花费80%的时间在编译和等待生效、清除缓存等操作上。

    加班是一种文化?
     我不认同加班是一种“文化”。加班就是加班,是由于工作没有完成导致的。
     在一个项目和人力都很稳定的团队中,有两种原因会导致加班。
     一种是糟糕的项目管理,领导失职,没有安排好工作。
     第二种是员工能力不够,效率不高,没有按时完成目标。在这两种情况下,我都建议您跟领导去沟通。
     我时常听人抱怨说,团队有加班的氛围,他早早完成了工作,可是看见大家下班后还待在座位上(尤其是领导还在),就不好意思自己一个人下班,只好留下来“陪加班”。甚至,因为长期在这种环境下工作,有人认为领导在升职加薪的时候优先考虑爱加班的人,所以白天就慢慢吞吞,晚上就开始加班。
     我认为这种情况也许只是个别人的认知问题:认为领导推崇加班的氛围,以及领导按工作时长来判断投入度,以此作为升职加薪的考量因素;或者认为领导不知道谁工作成果更好,所以按劳累程度来判断……所有这些认知都是因为茫然和不自信,不知道自己的核心竞争力是什么,也不知道老板真正需要的是什么。拿工作时长来拼,这还是体力劳动时代打工者的心态在作祟。
    稍有常识的老板,或者接受过一点点管理培训的领导者,都知道评估员工是看结果,而不是看努力和过程。您在把老板当傻子,拼命展示“辛苦”,结果更加不如意,只好天天抱怨:“小A这个家伙每天不加班,怎么老板那么喜欢他,升得比我还快!”
     工程师需要提高自己的沟通能力,如果大家因为紧急项目等原因在加班,您不妨过去问问,能不能帮到什么忙。用积极的态度去思考问题,而不是消极地坐在那里,浪费自己的时间和情绪。大部分老板都会很欢迎员工主动的沟通。
     如果团队内年轻人比较多,有些时候他们下班后喜欢留在办公室,并不是因为项目需要,而是公司内有免费的晚餐、空调、饮料、电脑……几乎是一个单身宅男需要的一切了,所以他们喜欢待在公司也是比较容易理解。我常常跟他们说的是,下班之后尽量不要处理工作需求了,多点时间自我学习,或者准备一些分享,甚至做一些编外项目(side project)。重点是,不要加班做白天遗留下来的工作。
     如果下属经常需要加班才能完成工作,我会认为是管理者的失职,一方面我会看看是否给员工安排的工作太多,能否转移一些给其他人,另一方面也会看是否需要借调其他资源,或者招聘更多人手。
     加班狂的英文是Workaholism,直译为“工作上瘾”。长期加班的人会有一种错误的观念,就是午夜鏖战全情投入项目的标志。他们不会去找高效的方法,因为他们确实喜欢加班。这往往导致恶性循环,熬夜和过量的工作让人疲惫,影响人的思维和判断力,这样更加无法找到高效的方法来完成工作。
     最后,过量的工作和压力严重影响健康,最终导致一些慢性病,甚至猝死。我们经常在媒体上看到某IT公司员工猝死,临死前还在朋友圈发加班的照片。
     我不确定家庭状况、个人健康或者具体项目对猝死员工产生了什么影响,但我认为一个接受过高学历教育的成年人,应该有能力权衡自己的健康、家庭的责任,以及长期工作回报。每个人都可以有自己的选择。工作上瘾者不光把自己逼上绝路,也把老板逼上绝路。您认为自己能高负荷工作坚持一个月,他就认为您还能坚持半年。

     总结一下,加班不是一种“文化”,它往往是我们心中假想的老板,还有媒体渲染出来的一种畸形工作模式。在这种模式中,加班狂习惯了熬夜和过量的工作,他们往往也给了老板长期加班的预期,同时也带来低迷的士气,以及疲倦的身体。

    延伸阅读:
    1.《软件随想录:程序员部落酋长Joel谈软件》(美)Joel Spolsky,人民邮电出版社
    2.《卓有成效的程序员》(美)Neal Ford,机械工业出版社

    展开全文
  • 浅谈如何提高编程效率

    千次阅读 2015-08-05 18:13:32
    浅谈如何提高编程效率?1.提高工作经验 经验来自实践。平时多阅读一些技能方面的书籍和来自各网站上的优秀文章。如果说,一本书就是一个台阶,那么在人的一生中将有千万道台阶等着我去跨越。每跨越一步台阶,将得到...
    浅谈如何提高编程效率?
    1.提高工作经验
    经验来自实践。平时多阅读一些技能方面的书籍和来自各网站上的优秀文章。如果说,一本书就是一个台阶,那么在人的一生中将有千万道台阶等着我去跨越。每跨越一步台阶,将得到不可估量的财富,而下一步台阶,又将带我步入一个新的境界,获取新的知识。
      看到学到做到。平时有时间多看看大牛写的代码,多看看开源的项目并参与一些开源项目的编码工作。
    2.和大牛、勤奋的人一起工作
    和大牛有经验的程序猿一起工作。和勤奋的人一起共事。永远不要相信“你改变不了环境,但可以改变自已。”这句话。这一般只有牛人才能做到。和勤奋的人一起,才能潜移默化的影响自己更勤奋。
    3.好的开发工具
    好的开发工具也能事半功倍。高效的开发工具,超牛的电脑配置。当然基础也要好。
    4.学会做笔记
    好记性不如一个乱笔头。在学习和工作的过程中多做笔记,对曾经走过的坑,多总结并记录下来。可以整理成文章并分享,增加互动。当某一天忘记了再翻过来看看。
    5.锻炼身体
      身体是革命的本钱,只有好身体才能有好的工作、学习状态。平时也好休息好,生性乐观,保持积极向上的心态。
    6.练习快速打字
      快速的键盘输入可以让编程工作更加高效。
    7.学习并掌握好的编程思想
    思路决定出路。好的编程思想可以引导大家更快的写出更高效的代码。
    8.良好的沟通技巧
    有效的沟通取决於沟通者对议题的充分掌握,而非措辞的甜美。只有充分的沟通,才能更好的掌握并理解客户的需求,做出更完美的程序。
    9.良好的架构设计
    好设计是一种再设计。好设计是能够再复制的设计。好的设计就是最简单的设计。好的架构能适应各种业务和需求。像建筑开发一样,先要有设计图纸。写程序也是一样,先要有需求分析等各种分析业务逻辑图。
    10.编写单元测试
    良好的测试习惯是必不可少的。如果你这么要求自己的话,代码质量能提高很多。进步神速。
    11.学习其他编程语言
    在学习其他编程语言中,你会发现各种语言不同实现思想。对你的思维会进行重构和进化。
    欢迎大家关注我的博客!如有疑问,请加QQ群:454796847共同学习!
    展开全文
  • 15、打开apache的mod_deflate模块,可以提高网页的浏览速度。  16、数据库连接当使用完毕时应关掉,不要用长连接。  17、错误消息代价昂贵。  18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用...

    节省变量开销foreach (array('app', 'userapp', 'ad', 'magic') as $value) {

    用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种 可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 
    1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 
    2、$row[’id’] 的速度是$row[id]的7倍。 
    3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。 
    4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 
    5、注销那些不用的变量尤其是大数组,以便释放内存。 
    6、尽量避免使用__get,__set,__autoload。 
    7、require_once()代价昂贵。 
    8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。 
    9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 
    10、函数代替正则表达式完成相同功能。 
    11、str_replace函数比preg_replace函数快,但strtr函数的效率是str_replace函数的四倍。 
    12、如果一个字符串替换函数,可接受数组或字符作为参数,并且参数长度不太长,那么可以考虑额外写一段替换代码,使得每次传递参数是一个字符,而不是只写一行代码接受数组作为查询和替换的参数。 
    13、使用选择分支语句(译注:即switch case)好于使用多个if,else if语句。 
    14、用@屏蔽错误消息的做法非常低效,极其低效。 
    15、打开apache的mod_deflate模块,可以提高网页的浏览速度。 
    16、数据库连接当使用完毕时应关掉,不要用长连接。 
    17、错误消息代价昂贵。 
    18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的速度相当。 
    19、递增一个全局变量要比递增一个局部变量慢2倍。 
    20、递增一个对象属性(如:$this->prop++)要比递增一个局部变量慢3倍。 
    21、递增一个未预定义的局部变量要比递增一个预定义的局部变量慢9至10倍。 
    22、仅定义一个局部变量而没在函数中调用它,同样会减慢速度(其程度相当于递增一个局部变量)。PHP大概会检查看是否存在全局变量。 
    23、方法调用看来与类中定义的方法的数量无关,因为我(在测试方法之前和之后都)添加了10个方法,但性能上没有变化。 
    24、派生类中的方法运行起来要快于在基类中定义的同样的方法。 
    25、调用带有一个参数的空函数,其花费的时间相当于执行7至8次的局部变量递增操作。类似的方法调用所花费的时间接近于15次的局部变量递增操作。 
    26、Apache解析一个PHP脚本的时间要比解析一个静态HTML页面慢2至10倍。尽量多用静态HTML页面,少用脚本。 
    27、除非脚本可以缓存,否则每次调用时都会重新编译一次。引入一套PHP缓存机制通常可以提升25%至100%的性能,以免除编译开销。 
    28、尽量做缓存,可使用memcached。memcached是一款高性能的内存对象缓存系统,可用来加速动态Web应用程序,减轻数据库负载。对运算码 (OP code)的缓存很有用,使得脚本不必为每个请求做重新编译。 
    29、当操作字符串并需要检验其长度是否满足某种要求时,你想当然地会使用strlen()函数。此函数执行起来相当快,因为它不做任何计算,只 返回在zval 结构(C的内置数据结构,用于存储PHP变量)中存储的已知字符串长度。但是,由于strlen()是函数,多多少少会有些慢,因为函数调用会经过诸多步 骤,如字母小写化(译注:指函数名小写化,PHP不区分函数名大小写)、哈希查找,会跟随被调用的函数一起执行。在某些情况下,你可以使用isset() 技巧加速执行你的代码。 
    (举例如下) 
    if (strlen($foo) < 5) { echo “Foo is too short”$$ } 
    (与下面的技巧做比较) 
    if (!isset($foo{5})) { echo “Foo is too short”$$ } 
    调用isset()恰巧比strlen()快,因为与后者不同的是,isset()作为一种语言结构,意味着它的执行不需要函数查找和字母小写化。也就是说,实际上在检验字符串长度的顶层代码中你没有花太多开销。 
    34、当执行变量$i的递增或递减时,$i++会比++$i慢一些。这种差异是PHP特有的,并不适用于其他语言,所以请不要修改你的C或 Java代码并指望它们能立即变快,没用的。++$i更快是因为它只需要3条指令(opcodes),$i++则需要4条指令。后置递增实际上会产生一个 临时变量,这个临时变量随后被递增。而前置递增直接在原值上递增。这是最优化处理的一种,正如Zend的PHP优化器所作的那样。牢记这个优化处理不失为 一个好主意,因为并不是所有的指令优化器都会做同样的优化处理,并且存在大量没有装配指令优化器的互联网服务提供商(ISPs)和服务器。 
    35、并不是事必面向对象(OOP),面向对象往往开销很大,每个方法和对象调用都会消耗很多内存。 
    36、并非要用类实现所有的数据结构,数组也很有用。 
    37、不要把方法细分得过多,仔细想想你真正打算重用的是哪些代码? 
    38、当你需要时,你总能把代码分解成方法。 
    39、尽量采用大量的PHP内置函数。 
    40、如果在代码中存在大量耗时的函数,你可以考虑用C扩展的方式实现它们。 
    41、评估检验(profile)你的代码。检验器会告诉你,代码的哪些部分消耗了多少时间。Xdebug调试器包含了检验程序,评估检验总体上可以显示出代码的瓶颈。 
    42、mod_zip可作为Apache模块,用来即时压缩你的数据,并可让数据传输量降低80%。 
    43、在可以用file_get_contents替代file、fopen、feof、fgets等系列方法的情况下,尽量用 file_get_contents,因为他的效率高得多!但是要注意file_get_contents在打开一个URL文件时候的PHP版本问题; 
    44、尽量的少进行文件操作,虽然PHP的文件操作效率也不低的; 
    45、优化Select SQL语句,在可能的情况下尽量少的进行Insert、Update操作(在update上,我被恶批过); 
    46、尽可能的使用PHP内部函数(但是我却为了找个PHP里面不存在的函数,浪费了本可以写出一个自定义函数的时间,经验问题啊!); 
    47、循环内部不要声明变量,尤其是大变量:对象(这好像不只是PHP里面要注意的问题吧?); 
    48、多维数组尽量不要循环嵌套赋值; 
    49、在可以用PHP内部字符串操作函数的情况下,不要用正则表达式; 
    50、foreach效率更高,尽量用foreach代替while和for循环; 
    51、用单引号替代双引号引用字符串; 
    52、“用i+=1代替i=i+1。符合c/c++的习惯,效率还高”; 
    53、对global变量,应该用完就unset()掉;

    展开全文
  • 提高编程效率

    2017-11-28 02:38:15
    那么如何提高编程效率呢,下面给出了一些建议,开发人员可以根据自己的实际情况进行思考和提升。 二、方法 1.训练编程能力 很多程序员在工作或者工作之余,并没有拿出多少时间去刻意训练自己的编程能力。大多数的...

    一、概述

    编程效率在工作中扮演着至关重要的角色,优秀的程序员往往都有着很高的效率,这样一来就会有更多的时间去学习或者做其他事情。那么如何提高编程效率呢,下面给出了一些建议,开发人员可以根据自己的实际情况进行思考和提升。

    二、方法

    1.训练编程能力

    很多程序员在工作或者工作之余,并没有拿出多少时间去刻意训练自己的编程能力。大多数的编程积累是在工作中完成的,如果是有目的的完成工作任务倒也很好,但是如果只是为了完成任务而编程的话,其实对于编程能力的提升并不大。球队员通过“网上训练”提高技能,音乐家通过练习演奏来提升水平,歌手也需要不断通过练习改进。那么关于能力的训练,可以采用刻意练习和一万小时理论。练习的内容从编程基础做起,像数据结构、算法、编程语言用法等,做到编程最基础核心的部分可以熟练掌握。阅读一些诸如《Effective Java》和《Design Patterns》等类型的书,并每天做些基础训练。从欧拉项目中找出些问题,然后 用你最喜欢的计算机语言解决它。其他部分以相同的策略拓展练习就可以了,这样编程能力就会慢慢提高。

    2.阅读代码和技术资料

    阅读代码和修改/编写代码一样困难。在当今开源世界的情况下,可以参阅大量优质代码。选择一个你最喜欢的开发库,然后仔细阅读以充分利用里面的资源。或许你不能很快便理解所有的内容,但是通过不断的训练,你将能够区分其中使用的不同模式,同时把这些模式用到你的代码中。除了看代码之外,你也可以订阅专业领域内优秀专家的博客,来获取最新趋势信息。

    3.集中注意力

    集中注意力,想清楚了,再去专注高效的写代码。可以使用番茄工作法,在进行番茄任务时,除了专心写代码之外,不做其他任何事情。不要整天盯着你的微信、QQ等,在工作时将它们最小化或关掉它们,戴上耳机。Tiny hack说:“即使不听音乐我也戴着耳机工作,这样便不会有人打扰到我。”如果不能集中注意力,那么思路就很难清晰,这样一来,不论是做需求还是修复问题,都是非常不利的。另外,还可以训练如何集中注意力,来加强专注聚焦的能力。

    4.掌握代码编辑器

    工欲善其事必先利其器。之前w3cschool推荐过获得程序员高分的编辑器,比如Notepad++、VIM、LightTable、jEdit、Sublime Text、emacs、visual studio、IDEA等。无论是文本编辑器还是IDE编辑器,没有高低之分,熟练掌握一种可以进行高效的开发才是王道。包括优化配置、各种运行调试、快捷键的使用等等。

    5.练习快速打字

    事实上很多程序员并不具备盲打的能力,但是盲打可以提高键盘输入的速度,当我们思考完毕如何开发的时候,快速的键盘输入可以让编程工作更加高效。因此,对于还停留在一个个敲键盘的程序员来说,学习一下盲打,会是一个不错的体验和能力的提升。

    6.善用搜索

    对于那些不属于业务上的问题,比如API的使用、一些常见问题的处理,建议不要浪费时间自己琢磨,直接使用搜索引擎寻找答案即可。我们都知道,在一些情境下不要重复发明轮子,除非是自己有目的的需要。对于搜索引擎,建议谷歌和百度结合使用,谷歌的搜索结果更精准,百度本地化做得比较好。另外,像github、stackoverflow、csdn、掘金等等,建议经常去逛逛。

    7.编写单元测试

    很多程序员会认为编写单元测试浪费时间,所以根本就没有这个工作习惯。不否认,在一些场景下会有这个问题。看似是一个取舍的问题,其实是一个习惯的问题。如果养成了编写单元测试的习惯,熟练之后并不会浪费时间。TDD的编程模型,在一些复杂的场景下,可以很好的帮助程序员提前发现问题。避免了一旦出现问题造成一时无从下手的尴尬。很多时候困恼程序员的Bug并不是什么大问题,而就是一些非常简单低级错误引起的,所以建议养成编写单元测试的习惯,不要写完就扔给测试人员去测,经自己手的东西,要保证质量。

    8.精力管理

    离开10分钟往往就可以解决一个问题。控制编程时间,给自己一个多姿多彩的生活,劳逸结合能让你在工作时更高效、更愉悦。当然,即便是上了年纪的程序员也知道,以最少的时间完成最高效的工作是成为10倍效率开发者的必要条件。

    9.与编程高手一起工作

    和大牛有经验的程序猿一起工作。和勤奋的人一起共事。永远不要相信“你改变不了环境,但可以改变自已。”这句话。这一般只有牛人才能做到。和勤奋的人一起,才能潜移默化的影响自己更勤奋。作为一个程序员,我觉得在职业生涯中最好的一件事儿就是从电脑前站起来,去拜访那些在某一领域有所建树的人们。

    1. 站在巨人的肩膀上

    个体的力量总是有限的,软件行业发展这么多年来,已经有很多前人为我们铺平了道路。在资源有限的情况下,可以考虑使用第三方的解决方案,暂时不去重新发明轮子。但是这只是停留在用的维度,待业务稳定之后,要进一步去学习和理解轮子是怎么创造出来,而且最好是要自己也经历发明创造的过程,这样技术才能有所提高。对于资料文献和开源项目,尽量去使用比较活跃的,在社区有影响力的。

    11.设备要求

    一个程序员通常是要两个显示器,两屏可以一边编程,一边看api的doc。当然,还要有相当不错的机械键盘。很多程序员男朋友一定要有个机械键盘。如果你是个妹子,一定要送给程序员男朋友一个,我担保他心花怒放一整天。除此之外,一张合适的座椅,也能够减缓程序员编程的疲劳感,谁说上班不可以自备座椅呢? 另外建议使用Mac进行开发,至于为什么,谁用谁知道。

    12.敏捷开发

    敏捷开发是采用迭代、循序渐进的方法进行软件开发,简单、快速可以不断的优化,有以下几个建议:

    • 沟通第一,如果需求都理解错误了,最后做出来才发现,只能加班返工。
    • 必要的地方要写明注释,不解释
    • 过早的优化是一切罪恶的根源
    • 选择最简单的解决方案。

    转载于:https://juejin.im/post/5a1c3d206fb9a045055ddaed

    展开全文
  • 目前一些github的教学比较复杂,教的东西也比较多,我们就一起来看看对于小白来说,... Workspace:工作区 Index / Stage:暂存区 ...Repository:仓库区(或本地仓库) ...进入项目文件夹下,通过下面命令将这个文...
  • 如何提高PHP编程效率

    2011-07-07 10:20:19
    15、打开apache的mod_deflate模块,可以提高网页的浏览速度。 16、数据库连接当使用完毕时应关掉,不要用长连接。 17、错误消息代价昂贵。 18、在方法中递增局部变量,速度是最快的。几乎与在函数中调用局部变量的...
  • 在学编程这个选择上 有些人在大学的时候 就选择了编程专业 有些是出来工作之年之后 转行到培训平台学习 但也有的人 ...是很致命的导致学习效率低下 ...关于自学编程 ...你觉得怎么样才能提高学习效率呢? ...
  • 几个提高效率的开发工具 1.SQL查询工具-Navicat 这个大家应该经常用,怎么充分利用,这里再提示一下了,新版本的软件可以支持使用自定义SQL标签 2.热部署插件-JRebel 不用重新启动容器,最明显的效果是,新文件,新方法的...
  • Python是目前最火的编程语言,其简单易学、开源免费,在机器人编程领域应用广泛,具有广阔的前景,但是,其运行效率却不如C语言等,对于Python编程人员来说,可以从以下几点进行Python编程效率的提升!1. 不使用分号...
  • 如何提高PHP编程效率?今天为您送来学php编程的干货知识。  1.、用单引号取代双引号来包含字符串,这样做会更快一些。由于PHP会在双引号包抄的字符串中征采变量,单引号则不会,留意:只要echo能这么做,它是一...
  • 线性电源是先将交流电经过变压器降低电压幅值,再经过整流电路整流后,得到脉冲直流电,后经滤波得到带有微小波纹电压的直流电压。线性电源的优点在于稳定度高、精度高,纹波小,在一些领域是必不可少的测试工具。
  • 复制 1、选中当前行并向下复制一行 [ IDEA ] CTRL + ALTER + DOWN 选中 ...[ IDEA ] ALTER + CAPSLK(大小写切换) + 鼠标左键 [ Sublime Text ] SHIFT + 鼠标右键 ...光标 + SHIFT + END + 鼠标左键
  • 零基础学习Java编程,该如何入手呢?也不知道学习Java编程的方向,很多人会问Java零基础怎么样学习,有没有什么入门的书籍推荐;只要方法正确,零基础学好Java也是有机会的哦。?理解Java思想?Java是一门面向对象编程...
  • 程序员与aiXcoder结对编程, 能够大大提高编程效率。 在aiXcoder的辅助下,程序将彻底摆脱传统的编程模式,不再需要“逐字逐句”编写程序。 aiXcoder能够自动预测程序员的编程意图, 连续向程序员推荐“即将书写的...
  • 提高编程效率的技巧

    2011-01-26 17:06:00
      俗话说,磨刀不误砍柴工,拿出一部分时间提升自己的技能,可以提高工作效率。你可以参考以下几条建议: 1. 编写单元测试,提高效率(如果你还没有这样做) 这是一个十分基础的工作,但是...
  • 提高编程效率的14件事http://fellow.51cto.com 2009-07-17 14:02 jythonor 北大青鸟中文网 我要评论(0)摘要:提高编程效率的14件事。标签:程序员 编程效率   下面是14件如何有效编程的方法:...
  • 程序员:提高编程效率的技巧 本文写给那些认为在项目上所花时间和效率成正比的程序员。我要说的是,事实并非如此。虽然你需要在电脑前敲键盘输入东西,但这只和编程沾上一点边。那么,程序员该如何利用时间呢?俗话...
  • 本文主要从5个方面详细叙述了如何提高编程效率的方法。
  • 如何借鉴大师的 在C#提高编程效率的经典书籍。 以前看到中文版觉得很不错,这是英文原版 有空的时候可以拿过来品读一二 还可以提高下英文水平。
  • 学习编程也一样,那么如何分配时间才能达到事半功倍的效果呢? 在学习的过程中,我总结了一些感受(个人想法) 一、很多人说程序员是吃青春饭,身体是革命的本钱,健康永远要放在首位,首先要调整好自己的状态,一定...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,806
精华内容 722
关键字:

如何提高编程效率