与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 ...
随机推荐
- Android Studio单元测试入门
Android Studio单元测试入门 通常在开发Android app的时候经常会写一些小函数并验证它是否运行正确,通常做法我们是把这个函数放到某个界面(Activity上)执行一下,运行整个工程 ...
- AndFix热修复 —— 实战与源码解析
当你的应用发布后第二天却发现一个重要的bug要修复,头疼的同时你可能想着赶紧修复重新打个包发布出去,让用户收到自动更新重新下载.但是万事皆有可能,万一隔一天又发现一个急需修复的bug呢?难道再次发布打 ...
- mongo集群
http://blog.csdn.net/canot/article/details/50739359 http://blog.csdn.net/bluejoe2000/article/details ...
- Windows去除快捷箭头
美化桌面 bat代码: reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shel ...
- 十天冲刺---Day2
站立式会议 站立式会议内容总结: git上Issues新增内容: 燃尽图 照片
- CSS3绘制弹球动画效果
<!DOCTYPE html><html> <head> <meta charset="UTF-8"> <title>& ...
- Ubuntu 14.04 安装 JDK 8,ubuntu14.04
第一步,下载Linux版JDK 可以通过访问Oracle官网下载,或者直接通过命令行下载. lxh@ubuntu:~$ wget -c http://download.oracle.com/otn-p ...
- zabbix_server的自动发现,实现批量添加主机,并链接到模板
一.需求 zabbix 服务器可以手动加入zabbix-agent客户端,对于少量的机器,这没有什么.但到了线上,我们有大量的服务器需要监控时,如果再一个个的手动加的话,工作量势必会增加很多.这时,z ...
- 【转】JSP中文乱码问题终极解决方案
原文地址:http://blog.csdn.net/beijiguangyong/article/details/7414247 在介绍方法之前我们首先应该清楚具体的问题有哪些,笔者在本博客当中论述的 ...
- 【HDU 2063】过山车(二分图匹配)
n个女生,m个男生.如果女生i愿意让男生j作为parner,那就建边i->j+n,和j+n->i.然后用匈牙利算法算出最大匹配. 要注意N和M都要开2倍. #include <cst ...