最近在做一个模仿excel功能的在线项目。其中有一个功能,数据列表中的数据,到了最后一列都要进行总计。这本来没什么难度。直接从数据库取出数据后,进行foreach相加就行 了。这是如此的简单,以至于用了不到五分钟写就了功能,根本没把脑子带在身上。

两天后的一次不经意的浏览页面,发现统计的结果不对。于是左思右想,竟然没有发现我的计算有什么逻辑上的bug。但没有bug,最后的计算结果不对,肯定是哪里有问题,只是我现在没有发现而已。

后来反复输出原始数据,竟然发现,从数据库取出的数据是经过number_format处理过的结果,千分位上加上了逗号,已经变成了一个字符串。相加的时候我还使用了强制类型转换(int)使数字字符串变成int类型,方便相加。

明白的问题之后,就好采取方法修复bug了。既然是多了一个逗号,那么我们把这个逗号都去掉就好了吧。于是用了str_replace函数,把逗号换成""空字符串。这样自然数据转成了字符串数字,然后再强制转换城int类型。

最后统计的结果算出来了,数据是很长的一串。非常不便于阅读。于是还要把最后的统计结果还要用number_format来再次千分位加逗号,让统计数据最好让用户理解。


进入公司即将三个月,也见了大牛们写的代码。结合自己的性格以及习惯,谈谈理解。

首先程序员不是码农,每天从事的工作,不是在和一堆无意义的字符在打交道,程序的工作更像是作家,用文字去写一个故事。

代码的整齐与否,至关最要,我认为在所有要素里,代码是否整齐,是最最重要的。

一篇整整齐齐的代码,先不从理解的角度去看。舒适的排版,得当的留白,清晰明了的注释,会让后续看代码的人感觉到这是一篇用心写作的代码,浮躁的心情也会慢慢沉静下来。

如果连基本的变量等号都不对齐,真只能是糟糕透了。下次就像自己看自己的代码的时候,也觉得恶心。

变量的命名一定要规范。你可以有自己的变量命名规范,如果小组开发中有自己的开发规范,那一定要遵守。

变量的命名尽量采用英文的命名,我使用的是小驼峰命名,即第一个单词小写,第二个单词首字母大写。

肯能我自己做过设计的原因吧,任何一件东西,首先要好看,其次再去谈用着怎么样。

毕竟,代码你每天都要去看他,实在不忍心自己的世界里都是荒乱无序的代码。

愿代码如诗,愿生活如虹。

与number_format函数有关的一个bug?的更多相关文章

  1. MySQL关于exists的一个bug

    今天碰到一个很奇怪的问题,关于exists的, 第一个语句如下: SELECT ) FROM APPLY t WHERE EXISTS ( SELECT r.APPLY_ID FROM RECORD ...

  2. 由一个bug引发的SQLite缓存一致性探索

    问题 我们在生产环境中使用SQLite时中发现建表报“table xxx already exists”错误,但DB文件中并没有该表.后面才发现这个是SQLite在实现过程中的一个bug,而这个bug ...

  3. 你可能不知道的 NaN 以及 underscore 1.8.3 _.isNaN 的一个 BUG

    这篇文章并不在我的 underscore 源码解读计划中,直到 @pod4g 同学回复了我的 issue(详见 https://github.com/hanzichi/underscore-analy ...

  4. 标准模板库(STL)的一个 bug

    今天敲代码的时候遇到 STL 的一个 bug,与 C++ 的类中的 const 成员变量有关.什么,明明提供了默认的构造函数和复制构造函数,竟然还要类提供赋值运算符重载.怎么会这样? 测试代码 Tes ...

  5. VC2013的一个bug

    前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其它的非C++元素.这是一个比较新的 ...

  6. 关于C# XML序列化的一个BUG的修改

    关于C# XML序列化的一个BUG的修改 在我前一篇博客中提到用XML序列化作为数据库的一个方案,@拿笔小心 提到他们在用XML序列化时,遇到了一个比较严重的bug,即XML不闭合,系统不能正确的加载 ...

  7. [置顶]VC2013的一个bug

    [置顶]VC2013的一个bug 前段时间在尝试使用一个C++的GUI库nana.这个库最大的特点在于使用现代C++风格去编写GUI程序,而不需要使用大量的比较丑陋的代码(如MFC中的各种宏),或者其 ...

  8. sqlite在Android上的一个bug:SQLiteCantOpenDatabaseException when nativeExecuteForCursorWindow

    更多内容在这里查看 https://ahangchen.gitbooks.io/windy-afternoon/content/ ::-/com.company.product W/System.er ...

  9. [android开发IDE]adt-bundle-windows-x86的一个bug:无法解析.rs文件--------rs_core.rsh file not found

    google的android自带的apps写的是相当牛逼的,将其导入到eclipse中方便我们学习扩展.可惜关于导入的资料太少了,尤其是4.1之后的gallery和camera合二为一了.之前导4.0 ...

随机推荐

  1. 可扩展性 Scalability

    水平扩展和垂直扩展: Horizontal and vertical scaling Methods of adding more resources for a particular applica ...

  2. 61-umask 简明笔记

    设定在创建文件时的权限掩码 umask [mask] 参数 mask可以是3位八进制数或者是如同在chmod中使用的符号值,mask指定不允许的权限(文件的实际权限是777减去umask值) 如果没有 ...

  3. C++命名规范

    1.1    类型名 首字母大写,末尾加_T.如: class TnppCoverageArea_T{…}; 1.2    1.2 变量和函数名 变量和函数名中首字母小写,其后每个英文单词的第一个字母 ...

  4. 【Alpha版本】冲刺阶段——Day 7

    我说的都队 031402304 陈燊 031402342 许玲玲 031402337 胡心颖 03140241 王婷婷 031402203 陈齐民 031402209 黄伟炜 031402233 郑扬 ...

  5. Asp.Net Form验证不通过,重复登录

    问题产生根源: 当然,其实应该需要保持线上所有机器环境一致!可是,写了一个小程序.使用的是4.5,aysnc/await实在太好用了,真心不想把代码修改回去. so,动了念头,在这台服务器上装个4.5 ...

  6. http强制跳转到https

    原文地址:http://m.blog.csdn.net/article/details?id=8549290 需求简介 基于nginx搭建了一个https访问的虚拟主机,监听的域名是test.com, ...

  7. php COOKIE和SESSION的一些理解

    web服务器是基于http协议的,而http协议是无状态的,导致任意两个请求之间没有联系.但是我们登录网站后,它却能记住我们的身份,这个过程中一定使用了某个标识来区别我们的身份.对于简单数据传输的我们 ...

  8. Doccms 中新闻列表排序无效bug的修复

    手动修改 content/index/list.php 37 为 $sql="Select * FROM ".TB_PREFIX."list Where channelI ...

  9. HTTP 405 错误 – 方法不被允许 (Method not allowed)

    HTTP 协议定义一些方法,以指明为获取客户端(如您的浏览器或我们的 CheckUpDown 机器人)所指定的具体网址资源而需要在 Web 服务器上执行的动作.则这些方法如下: 介绍 OPTIONS( ...

  10. bootstrap fileinput-上传回调

    通过第三分jquery重新绑定一个重新加载事件 $("#file-4").on("fileuploaded", function(event, data, pr ...