与number_format函数有关的一个bug?
最近在做一个模仿excel功能的在线项目。其中有一个功能,数据列表中的数据,到了最后一列都要进行总计。这本来没什么难度。直接从数据库取出数据后,进行foreach相加就行 了。这是如此的简单,以至于用了不到五分钟写就了功能,根本没把脑子带在身上。
两天后的一次不经意的浏览页面,发现统计的结果不对。于是左思右想,竟然没有发现我的计算有什么逻辑上的bug。但没有bug,最后的计算结果不对,肯定是哪里有问题,只是我现在没有发现而已。
后来反复输出原始数据,竟然发现,从数据库取出的数据是经过number_format处理过的结果,千分位上加上了逗号,已经变成了一个字符串。相加的时候我还使用了强制类型转换(int)使数字字符串变成int类型,方便相加。
明白的问题之后,就好采取方法修复bug了。既然是多了一个逗号,那么我们把这个逗号都去掉就好了吧。于是用了str_replace函数,把逗号换成""空字符串。这样自然数据转成了字符串数字,然后再强制转换城int类型。
最后统计的结果算出来了,数据是很长的一串。非常不便于阅读。于是还要把最后的统计结果还要用number_format来再次千分位加逗号,让统计数据最好让用户理解。
进入公司即将三个月,也见了大牛们写的代码。结合自己的性格以及习惯,谈谈理解。
首先程序员不是码农,每天从事的工作,不是在和一堆无意义的字符在打交道,程序的工作更像是作家,用文字去写一个故事。
代码的整齐与否,至关最要,我认为在所有要素里,代码是否整齐,是最最重要的。
一篇整整齐齐的代码,先不从理解的角度去看。舒适的排版,得当的留白,清晰明了的注释,会让后续看代码的人感觉到这是一篇用心写作的代码,浮躁的心情也会慢慢沉静下来。
如果连基本的变量等号都不对齐,真只能是糟糕透了。下次就像自己看自己的代码的时候,也觉得恶心。
变量的命名一定要规范。你可以有自己的变量命名规范,如果小组开发中有自己的开发规范,那一定要遵守。
变量的命名尽量采用英文的命名,我使用的是小驼峰命名,即第一个单词小写,第二个单词首字母大写。
肯能我自己做过设计的原因吧,任何一件东西,首先要好看,其次再去谈用着怎么样。
毕竟,代码你每天都要去看他,实在不忍心自己的世界里都是荒乱无序的代码。
愿代码如诗,愿生活如虹。
与number_format函数有关的一个bug?的更多相关文章
- MySQL关于exists的一个bug
今天碰到一个很奇怪的问题,关于exists的, 第一个语句如下: SELECT ) FROM APPLY t WHERE EXISTS ( SELECT r.APPLY_ID FROM RECORD ...
- 由一个bug引发的SQLite缓存一致性探索
问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...
- 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG
这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...
- 标准模板库(STL)的一个 bug
今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...
- VC2013的一个bug
前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其它的非C++元素.这是一个比较新的 ...
- 关于C# XML序列化的一个BUG的修改
关于C# XML序列化的一个BUG的修改 在我前一篇博客中提到用XML序列化作为数据库的一个方案,@拿笔小心 提到他们在用XML序列化时,遇到了一个比较严重的bug,即XML不闭合,系统不能正确的加载 ...
- [置顶]VC2013的一个bug
[置顶]VC2013的一个bug 前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其 ...
- sqlite在Android上的一个bug:SQLiteCantOpenDatabaseException when nativeExecuteForCursorWindow
更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ ::-/com.company.product W/System.er ...
- [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found
google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展.可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了.之前导4.0 ...
随机推荐
- 在win8(win8.1)电脑上安装IIS,配置web服务器,发布网站
1.IIS安装: 打开控制面板——程序和功能——启用或关闭Windows功能——找到(Windows功能下)下的(Internet Infornation Services)把Web 管理工具和万维网 ...
- [poj 3537]Crosses and Crosses(博弈论)
题目:http://poj.org/problem?id=3537 题意:给你n个格子,两个人依次在n个格子的任意空位置画"X",谁如果画了一个后,3个X连在了一起,那么那个人就获 ...
- 【转】关于Class.forName(“com.mysql.jdbc.Driver”)
原文:http://www.cnblogs.com/gaojing/archive/2012/03/23/2413638.html 传统的使用jdbc来访问数据库的流程为: Class.forName ...
- JS 获取上一层目录
派生到我的代码片 <script type="text/javascript"> //返回当前工作目录 function GetCurrDir(){ var pathN ...
- webpack入坑之旅(一)不是开始的开始
最近学习框架,选择了vue,然后接触到了vue中的单文件组件,官方推荐使用 Webpack + vue-loader构建这些单文件 Vue 组件,于是就开始了webpack的入坑之旅.因为原来没有用过 ...
- 1020关于mysql一个简单语句的执行流程
MySQL的语句执行顺序 转自http://www.cnblogs.com/rollenholt/p/3776923.html MySQL的语句一共分为11步,如下图所标注的那样,最先执行的总是FRO ...
- iOS常用---NSArray,NSMutabuleArray
// 创建一个普通的数组,数组中可存储 id(任意)类型 NSArray *array =[[NSArray alloc]initWithObjects:",@"c" ...
- 去掉iPhone、iPad的默认按钮样式 去掉高光样式:
input[type="button"], input[type="submit"], input[type="reset"] { -web ...
- Oracle的自增长主键
自增长主键 --首先建一个表TEST create table TEST( NID int PRIMARY KEY, test1 varchar2(20), test2 varchar2(20) ...
- ELK系统中kibana展示数据的时区问题
在采用ELK记录系统日志时,日志存入elasticsearch时,一般是以本地时区存入(如北京东8区) 在elasticsearch中直接查询时也没有任何问题,但是kibana在做日志展示时,对日志时 ...