关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » 程序人生 »成为更加优秀的程序员的10个要点

    成为更加优秀的程序员的10个要点

    2015-04-17 00:00:00 出处:ITJS
    分享

    下面,我将作为一名有着多年编程经验的专业程序员,分享一些精华——它们已经帮助我提高了我的代码质量和整体的工作效率,希望也能对你有所裨益 。

    1.永远不要重复代码

    不惜一切代价也要避免重复代码。要是你有几个不同的地方经常性地要使用某个代码片段,那么可以将它重构成函数。代码重复不但会导致阅读混乱,导致bug——修复了这里的重复片段,却遗漏了其他地方的,还会导致代码库的臃肿和可执行文件大小的膨胀。现在的编程语言,能大大改善这方面的麻烦,例如,下面这段示例代码在委托和lambda表达式出现之前很难解决:

    /// <summary>
    /// Some function with partially duplicated code
    /// </summary>
    void OriginalA()
    {
    	DoThingsA();
    
    	// unique code
    
    	DoThingsB();
    }
    
    /// <summary>
    /// Another function with partially duplicated code
    /// </summary>
    void OriginalB()
    {
    	DoThingsA();
    
    	// unique code
    
    	DoThingsB();
    }

    但是现在,我们既可以将上述代码重构成函数,也可以使用委托重写:

    /// <summary>
    /// Encapsulate shared functionality
    /// </summary>
    /// <param name="action">User defined action</param>
    void UniqueWrapper(Action action)
    {
    	DoThingsA();
    
    	action();
    
    	DoThingsB();
    }
    
    /// <summary>
    /// New implmentation of A
    /// </summary>
    void NewA()
    {
    	UniqueWrapper(() =>
    	{
    		// unique code
    	});
    }
    
    /// <summary>
    /// New implementation of B
    /// </summary>
    void NewB()
    {
    	UniqueWrapper(() =>
    	{
    		// unique code
    	});
    }

    2.注意不要分心

    当你发现自己在刷Facebook和Twitter——不能专注于解决问题了,那么这往往意味着你需要稍作休息了。不妨离开办公桌去喝杯咖啡,和同事聊上个5分钟。不要以为这是在浪费时间,从长远来看这能让你更富有成效。

    3.解决方案要三思

    在高压下想出的解决方案,修复的bug,很容易因为过于兴冲冲,而将平时铭记于心的关键测试周期完全抛之于脑后。但是这往往会导致更多的问题,并且会让你在老板和同事眼中看起来显得不那么专业。

    4.测试完成的代码

    你知道你的代码应该做什么,并且可能已经测试过了,但是,你需要证明这一点。分析所有可能的边缘情况,并给出测试,以便确定你的代码在所有可能的条件下都可以正常执行。要是有参数,那么发送一些预期的范围之外的值。还可以发送null值。要是可以的话,不妨让你的同事来搞搞破坏——单元测试是一条正规的康庄大道。

    5.代码审查

    在你将代码提交到源代码控制之前,最好先将你所做的改动给你的同事解释一下。有时候往往只需要这样做,就能让你意识到自己代码的错误,即使你的同事不发一言。这可比仅仅只是自己回顾自己的工作要来得高效得多了。

    6.精简代码

    要是你用了大量代码来执行一些简单操作,那么很有可能是你走错路了。以下对布尔值的处理就是一个很好的例子:

    if (numMines > 0)
    {
       enabled=true;
    }
    else
    {
       enabled=false;
    }

    但其实你可以这么写:

    enabled = numMines > 0;

    代码越是精简越好——调试少了,重构少了,问题自然也少了。但是要注意的是:可读性同样重要。谁也不希望在精简代码的同时影响了代码的可读性。

    7.努力写出优雅的代码

    所谓优雅的代码,不但具备极强的可读性,还能以最少量的代码和机器操作来解决手头的问题。要想在所有情况下都能够做到代码的优雅,其实是相当难的,但是经过一段时间的编程之后,你会逐渐体悟到“优雅代码”应该是怎么样的。优雅的代码无法通过重构来做任何改进——为此自豪吧。下面这个计算凸多边形面积的代码示例就是我认为的“优雅的代码”:

    static public double GetConvexPolygonArea(Vector2[] vertices)
    {
    	double area = 0;
    	for (int i = 0; i < vertices.Length; i++)
    	{
    		Vector2 P0 = vertices[i];
    		Vector2 P1 = vertices[(i + 1) % vertices.Length];
    
    		area += P0.Wedge(P1);
    	}
    
    	return area / 2;
    }

    8.编写自文档化的代码

    注释是编程的一个非常重要的组成部分,但是自文档化的代码之所以能更胜一筹,是因为只通过阅读代码就能让人理解。通过巧妙选择函数名和变量名,再联系语言语义,就能够使得代码变得可读,哪怕阅读者是非编程人员。例如:

    void DamagePlayer(Player player, int damageAmount)
    {
    	if (!player.m_IsInvincible && !player.m_IsDead)
    	{
    		player.InflictDamage( damageAmount );
    	}
    }

    不过,自文档化的代码并不能替代注释。使用注释来解释“为什么”,用自文档化的代码来描述是“什么”。

    9.不要使用奇奇怪怪的数字

    光是将数字插入到代码中是不对的,因为没人能理解它们代表了什么。这会混淆我们——当相同的数字用于代码中多个不同地方的时候。有的地方可能会因此而导致变化,也有的会因此而产生bug。尽量使用命名的常量来描述要表达的值,即便它仅用于一个地方。

    10.自动化

    当我们在做一连串的动作时,是很容易犯错的。要是你的部署进程不只一个步骤,那么你出错了。我们应该尽可能地自动化,以减少人为犯错的机会。要是你需要执行很多任务的话,自动化就显得尤为重要了。

    11.避免过早优化

    一旦你开始优化已经可以成功运行的代码,那么就会有破坏功能的风险。优化应该只响应于性能分析,在项目结束的时候进行。提前于分析阶段的优化不但浪费时间,还会导致bug。

    是的,没错,我的题目中说的的的确确是“10点”,最后的“第11点”是我免费奉送的亲!

    我希望这些要点,将有助于提高你的编程和开发过程。

    期待大家的指正!

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    苹果将发布第三财季财报,很可能会超预期

    25 年第三季度 NAND Flash 合约价格预计将上涨 5-10%

    亚马逊网络服务 (AWS) 已裁员数百人

    邦彦邦彦云PC”新一代云上真机解决方案重磅亮相

    苹果Mac book产品线未来两年大升级:M5、M6系列芯片来袭

    净网—2025|代抢?录入?小心 “票圈陷阱”!

    脱下皮衣,英伟达 CEO 黄仁勋穿唐装亮相中国国际供应链促进博览会

    ATTO360 Storage 软件通过单一智能平台重新定义存储管理

    DigitalOcean 推出 DigitalOcean Gradient AI 平台

    网传华为盘古大模型疑似抄袭通义千问,盘古团队否认

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术分享

    SQL汉字转换为拼音的函数

    windows 7系统无法运行Photoshop CS3的解决方法

    巧用MySQL加密函数对Web网站敏感数据进行保护

    MySQL基础知识简介

    Windows7和WinXP下如何实现不输密码自动登录系统的设置方法介绍

    windows 7系统ip地址冲突怎么办?windows 7系统IP地址冲突问题的

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。