程序员,做艺术家不做码农

前几天和一个朋友聊天时说:我有强迫症,每次看到不符合自己审美的代码时,总想重构一下。朋友的观点与大多数人相仿,程序只要满足要求,运行正确就可以。

在现实的工作中一样,每当看到一段优美且高效的代码,我总是喜欢多看几遍,满心的享受。但是我们产品中的太多代码让我这个代码洁癖“患者”看了非常的烦躁:

1. 随便一个源文件都是上百行的函数,有些甚至超过500行(含空行和注释)。

2. 大量没有必要的临时变量定义。

3. 习惯性的把所有变量声明定义放到函数前面,一些大函数甚至超过20行都是函数局部变量的声明和定义。想想看,在第一个异常检查之后程序返回,而前面定义的十几个变量变得毫无价值。

4. 功能相仿的重复代码。

诸如此类的代码问题,给程序维护带来无尽的风险,而大多数技术管理者却认为代码重构根本毫无必要,甚至很多人认为只要设计文档写好,代码符合文档要求,顺利通过公司的各种质量评审,这段代码就最好不要动。要命的是,很多大型软件,很多团队共同开发,团队A要在团队B开发的代码中修改,为了省事,根本不考虑重构,甚至函数都不愿意增加一个,任由代码行数累加。

哎,如果我是一个技术管理者,我希望可以把敏捷中对于代码质量的要求贯彻和执行。程序开发者应该吧自己看做是艺术家,而不是一个累代码的民工。

为了说明这个问题,我用一段代码重构结束这篇牢骚。为了不至于引起误会,我采用的是www.cplusplus.com的一段小程序,没有对原作者不敬的意思,相反,我非常尊敬这些给开源做出重大贡献的朋友们。

原代码:

http://www.cplusplus.com/reference/cstdarg/va_arg/?kw=va_arg

/* va_arg example */

#include <stdio.h> /* printf */

#include <stdarg.h> /* va_list, va_start, va_arg, va_end */

int FindMax (int n, ...)

{

int i,val,largest;

va_list vl;

va_start(vl,n);

largest=va_arg(vl,int);

for (i=1;i<n;i++)

{

val=va_arg(vl,int);

largest=(largest>val)?largest:val;

}

va_end(vl);

return largest;

}

int main ()

{

int m;

m= FindMax (7,702,422,631,834,892,104,772);

printf ("The largest value is: %d\n",m);

return 0;

}

重构后的代码:

/* va_arg example */

#include <stdio.h> /* printf */

#include <stdarg.h> /* va_list, va_start, va_arg, va_end */

#include <stdlib.h>

int getTheLargest(va_list vl, int n, int* pVarray)

{

int val;

int largest =0;

for (int i=0;i<n;i++)

{

val=va_arg(vl,int);

largest=(largest>val)?largest:val;

pVarray[i] = val;

}

va_end(vl);

return largest;

}

int findMax (char a, int n, ...)

{

int* pVarray = (int*)malloc(sizeof(int)*n);

va_list vl;

va_start(vl,n);

return getTheLargest(vl, n, pVarray);

}

int main()

{

printf ("The largest value is: %d\n",

FindMax (‘a‘, 2, 702,822,631,834,892,104,772));

system("PAUSE");

}

控制台输出:

The largest value is: 822

Press any key to continue . . .

PS:

最近两个月一直没有更新博客,一方面工作确实太忙,另一方面花了很多时间在做个人的微信工作号:瑜伽分享汇。希望喜欢瑜伽的朋友们,可以关注。

程序员,做艺术家不做码农

时间: 2024-07-29 09:02:47

程序员,做艺术家不做码农的相关文章

每个程序员和设计师必做的10项运动

每个程序员和设计师必做的10项运动 分类 程序员人生 程序员和设计师大部分时间都坐在电脑前.有效的锻炼有助于他们更好地工作. 传统的: 当坐在电脑桌前的时候 脚触地. 双手在肘部弯曲. 打字时手应搁在桌子上. 键盘和鼠标应在触手可及的地方. 显示屏应在视线水平上,不高不低. 光线最好应来自上方.即光线应该从天花板上照下来. 每隔20分钟远眺.可降低眼睛长时间盯着近距离物体产生的疲劳. 鼠标和手差不多大小. 使用全尺寸符合人体工学的键盘.我个人比较喜欢Microsoft和Logitech这两个品牌

作为程序员我是怎么想做一个网站的?

原文地址:http://www.cnblogs.com/phphuaibei/p/3364469.html 本身作为一个网站开发者,做网站本来是件很容易的事情,但是真正到了给自己做一个网站的时候,却不知道该如何下手了! 事件描述: 本来想做一个简单的活动日历,可以在月历视图里面查看每周活动,就怎么简单!-----一个网页的需求 突然我想到,每周的活动详情还是要一个页面,还需要对应的后天发布,管理--------一个CMS的需求 如果有活动,那么他们可能要跟帖讨论问题,还有她们也可以发活动的---

做一个思想的码农

这段时间一直在做公司的项目,突然间有这么一个想法,其实逻辑方便的还好,可是当我们想把前台控件的值赋给对象时,或者是对象的值赋值给前台控件.我们每天都做着相同的事情,这着实是一个让人郁闷的事情.没有办法,我们每天的工作无外乎就是Ctrl+C,然后Ctrl+V最后把ID什么的改改,有用的用,没有用的删除,然后在创建一个新的.突然发现我们实实在在的就是一个码农,和那些工地上搬砖的哥们们没有什么区别,无外乎就是他们用的是体力,我们只要细心点用用键盘就OK.好了说了这么多都是废话,那么我就直接上代码了,接

做个犀利的码农:如何持续培养/更新自己的开发技能

我们的圈子,改变是生存的必备要素之一.计算机领域一直在改变,从基础框架到计算设备,还有几乎每天都涌现出的新技术,这些要求我们必须持续学习新东西.这里将介绍一些技巧,以使你可以在这从未停止的学习之旅更加轻松. 如何选择读物 程序员需要的技能改变是如此之快,尤其是那些热点的/快速演变的领域,比如本博关注的那些领域,还有移动开发等.找到这些领域合适的阅读材料有时不那么容易.两点建议: 1.利用好关注该类技术的那些网站.比如,在我学习iOS的过程中,我一直关注 RayWenderlish.com 和 i

趣文:你对程序员适不适合做老公的看法是?

内容来自网络整理. 首先我们看原文:  原文来自csdn论坛某贴: 找了个程序员做老公,所以认识了很多程序员.以前就没对程序员有过不好的看法,现在则更不会.发现csdn上老有悲观的论调,说程序员找不到老婆.今天我就以一个程序员妻子的身份,来写写找程序员做老公的好处.希望能给各位mm有借鉴,找程序gg做男朋友.  一.找程序员不用担心外遇. 程序员是对着电脑工作,周围同事大部分是男生.他的生活中基本接触不到mm,所以不会有办公室恋情的发生,也就不会有外遇问题发生.而且面对的诱惑少,不 像销售啊等职

一幅画&lt;十六芒星盾&gt;---程序员or艺术家

画上是一面含有16个尖角的铜盾,这是我用程序算法生成的图像中最震撼的一幅.图像生成出来后,我看了好久,一边看一边想我的人生转向问题:我是不是该离开苦逼又屌丝的程序界,混入高端大气上档次的艺术圈? 说要进入艺术圈,只是提升逼格的话.其实我真正想的是:“靠,这画这么漂亮,要是能换成钱就好了.”虽说艺术是无价的,可艺术家是有价的.程序可以创造无限的财富,但程序员通常分不到多少.艺术虽高雅,但人是生活在世俗中的.我想的一个法子是:在某宝上开个网店,买电子艺术画,只买我用程序算法生成的图像.我需要将图像生

数学家 程序员 哲学家 艺术家

这篇文章 的 部分内容 是 我在 反相吧 <数学已被滥用>  这个 帖 里 的 回复 (80 楼) ,    不过 80 楼 已经 被 百度 吞 了 . 先 看看 我写的 <论 数学的 工具性> https://www.cnblogs.com/KSongKing/p/10308498.html , 里面提到 : 逻辑 思维好的人, 数学 不一定好 . 程序 也是 逻辑 的 代表, 但 好的 程序员 不一定 会 解方程 . 程序 侧重于 “直观逻辑”, 数学 侧重于 “数字直观” .

一个程序员应该读哪些源码?

来自知乎-http://www.zhihu.com/question/19589485 一个程序员应该好好读过这样一些代码: 一个操作系统内核 一个编译器 一个解释器 一个数据库 一个 Web 服务器 一个 Web 浏览器 一个编辑器 比如:Redis.Lua .nginx.webkit.linux kernel.vim等等.

&quot;程序员&quot; 跟 &quot;码农&quot; 究竟有什么区别?

前言: IT界知名段子手,网络红人留几手曾经说:对于那些月薪两万以下,自称程序员的码农们,其实我们从来没有把他们归为我们程序员的队伍.他们虽然总是以程序员自居,只是他们的一厢情愿罢了. 此话一出,不知有多少小猴子默默地捏着工资条躲在厕所里轻轻啜泣.然而,钱的多少并不该成为分辨码农和程序员的分界线,那么码农和程序员之间的区别到底是什么呢? 作为一个开发者,有一个学习的氛围跟一个交流圈子特别重要这是一个我的iOS交流群:638302184,不管你是小白还是大牛欢迎入驻 ,分享BAT,阿里面试题.面试