要培养良好的开发风格。代码良好的可读性在软件的生命周期的各个阶段都有着至关重要的意义。 经验说明,软件开发的时间与维护的时间大概是 20% 和 80%,我们大部分时间其实是在维护和扩展别人(自己)的代码。 性能再高,读不懂的代码都不是好代码 也摆脱不了被推翻重写的命运。经验丰富的架构师在性能和可读性有分歧时宁可牺牲部分性能增加可读性。 良好的代码风格能避免一些偶发性的程序异常,甚至能提高运行效率。
1.【强制】 隶属于用户个人的页面或者功能必须进行权限控制校验。 说明:防止没有做水平权限校验就可随意访问、修改、删除别人的数据,比如查看他人的私信 内容、修改他人的订单。 2.【强制】 用户敏感数据禁止直接展示,必须对展示数据进行脱敏。 说明:查看个人手机号码会显示成:158_**_9119,隐藏中间 4 位,防止隐私泄露。 3.【强制】 用户输入的 SQL 参数严格使用参数绑定或者 METAD
1.【强制】 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引。 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的;另外,即使在应用层做了非常完善的校验控制,只要没有唯一索引,根据墨菲定律,必然有脏数据产生。 2.【强制】 超过三个表禁止 join。需要 join 的字段,数据类型必须绝对一致;多表关联查询时,保证被关联的字段需要有索
1.【强制】 表达是与否概念的字段,必须使用 is_xxx 的方式命名,数据类型是 unsigned tinyint ( 1表示是,0表示否)。 说明:任何字段如果为非负数,必须是 unsigned。 正例:表达逻辑删除的字段名 is_deleted,1 表示删除,0 表示未删除。 2.【强制】 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只 出现数字。数据库字段名的修
1.【强制】 日志文件推荐至少保存 15 天,因为有些异常具备以“周”为频次发生的特点。 2.【强制】 应用中的扩展日志 ( 如打点、临时监控、访问日志等 ) 命名方式:appName-logType-logName . log 。 logType :日志类型,推荐分类有stats / desc / monitor / visit 等 ; logName :日志描述。这种命名的好处:通过文件名就可
1.【强制】 类、类属性、类方法的注释必须使用 phpdoc 规范,使用/**内容*/格式,不得使用 //xxx 方式。 说明:在 IDE phpdoc 方式会示相关注释,生成 phpdoc 可以正确输出相应注释; 在 IDE 中,工程调用方法时,不进入方法即可悬浮 示方法、参数、返回值的意义,提高阅读效率。 2.【强制】 所有的抽象方法(包括接口中的方法)必须要用 phpdoc 注释、除了返回值
调用合约的deploy()方法将其部署到区块链上。其返回的Promise对象 将在成功部署后解析为新的合约实例。 调用: myContract.deploy(options) 参数: options - Object: 用于部署的配置选项,包含以下字段: data - String: 合约的字节码 arguments - Array : 可选,在部署时将传入合约的构造函数 返回值: Object
克隆当前的合约实例对象。 调用: myContract.clone() Clones the current contract instance. 参数: 无 返回值: Object: 克隆得到的新合约实例 示例代码: var contract1 = new eth.Contract(abi, address, {gasPrice: '12345678', from: fromAddress})
用于合约实例的地址,保存。web3.js从这个合约生成的所有交易,其to字段的值都是该地址。 当设置该选项时,web3.js将以小写形式保存。 调用: myContract.options.address 属性: address - String|null: 合约实例对象的地址,如果未设置的话则为null 示例代码: myContract.options.address; > '0xde0b29
原文:http://zeppelin-solidity.readthedocs.io/en/latest/bounty.html 这个例子结合了Truffle框架,如果你不知道如何集成,可以先看看,还挺方便的:http://me.tryblockchain.org/obust-smart-contracts-with-openzeppelin.html 要为你的合约创建一个赏金项目。需要继承父类B
StandardToken继承的父类方法,相比StandardToken,这个类只提供基础功能,而StandardToken允许授权给其它人额度来转发代币。 balanceOf(address _owner) constant returns (uint balance) 返回传入地址的余额。 function balanceOf(address _owner) constant returns
基于FirstBlood的代码:原始的firstBlood的代码在这里。 继承了合约SafeMath,实现了ERC20标准(标准参见:https://github.com/ethereum/EIPs/issues/20)。 原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/standardtoken.html 源码地址:https://g
父类合约。支持通过拉取方式实现支付。继承这个合约,并通过asyncSend来替代发送功能。理念参考这个文章:http://me.tryblockchain.org/onward-with-ethereum-smart-contract-security.html 原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/pullpayment.h
父合约,限制当前合约所能持有的资金额度。 原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/limitbalance.html 源码地址:https://github.com/OpenZeppelin/zeppelin-solidity/blob/6e66ba321e545c7840f51ba978a0dd9aaad3ad99/contr
有安全检查的数学操作函数 原文地址:http://zeppelin-solidity.readthedocs.io/en/latest/safemath.html 源码地址:https://github.com/OpenZeppelin/zeppelin-solidity/blob/master/contracts/math/SafeMath.sol assert(bool assertion)