一些代码写法推荐

等号加空格

$a=1; // 新手用
$a = 1; // 1年+工作经验都会变成这样

挺有趣的事实, 通过看 我以前代码 & 同事以前代码 & 一些新手的代码,
都会慢慢过渡加 空格 的。

变量重复

个人感觉一部分的代码的优化

一眼可以看出, code 变量出现两次。

 let code = this.getCodeByArea(value);
 if( isArea) 
   code = this.getAreaCode(value,check,type)

这样重写变量不香吗?

调用两次 this.getAreaCode 速度会慢些,
我只能说: 慢个 0.1ms 重要吗?

(当然最优的是: 是处理下参数 最后再调用函数)

不用else

个人感觉一部分的代码的优化

写代码,我个人不用 else 的。

还有些人类迷惑行为:

if( $res == "hello")
    return true;
else 
    return false;

请问 else 有啥用:joy:
见过挺多这种 迷惑行为

拒绝使用数字做状态

// 即使数据库有注释 但是看也麻烦 (我想只有新手才会用数字)
$order->status = 3;   

// 好处: 1. ide可以点击跳转过去  2. 一眼看懂
$order->status = Order::STATUS_SUCCESS; 

使用本地作用域代替Where

这和 [拒绝使用数字做状态] 有类似,都是为了更直观理解代码。
Where:

Address::Where('user_id',Auth::id())->get()

使用作用域:

模型添加

public function scopeCurrUser($query)
{
    return $query->where('user_id', Auth::id());
}

调用:
Address::CurrUser()->get()

本地作用域优势:

  1. 复用 (建议创建个 模型基类)
  2. 直观

(作用域见: 局部作用)

模型可以考虑使用query()

直接用

一些代码写法推荐

query()

个人感觉一部分的代码的优化

区别

  1. query()ide 提示。
  2. query() 更快,因为他不会经过这两个魔术方法。(这点速度可以忽略 就一点点)
    个人感觉一部分的代码的优化

用异常替代错误的返回

return

一些代码写法推荐

异常

个人感觉一部分的代码的优化

异常优势

子方法 或者说 在 任何方法,都可以 中止 后面的代码, 然后运行异常的处理。

这是 return 无法做到的。

推荐

可以看下这个: 重构 改善既有代码的设计—笔记
(虽然我没怎么仔细看过)

本作品采用《CC 协议》,转载必须注明作者和本文链接
专心学习不瞎搞
本帖由系统于 3年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 24

if 不加花括号,我裂开 :joy: :joy:

3年前 评论
lyxxxh (楼主) 3年前

接受不了 if 不加花括号 {},哈哈哈

3年前 评论

复杂逻辑先写 汉字描述 再写具体代码

1.xxx
 // todo
  1.1xxx
   // todo
  1.2xxx
  // todo
2.xxx
// todo
3年前 评论

if 不加花括号,我裂开 :joy: :joy:

3年前 评论
lyxxxh (楼主) 3年前

:+1:学到了,感谢大佬分享!

3年前 评论

对模型查询加query那个不太建议,如果要ide提示加个minxin 写多了方法都记住了

3年前 评论
sunny123456 3年前
小学毕业生 (作者) 3年前

官方代码规范PSR-2 照着这个来

3年前 评论
lddtime 3年前

接受不了 if 不加花括号 {},哈哈哈

3年前 评论

我准备从新 按照你的方式优化下我的程序代码

3年前 评论
我的世界 3年前

我只能说:慢个 0.1ms 重要吗?一个函数0.1,10个函数呢?

3年前 评论
zxk 3年前
nff93 3年前

我隐约的记得if不用花括号是代码不规范的一种。 :see_no_evil:

3年前 评论

我也知道if不加 花括号不规范,但是一行的if就是控制不住我自己,最主要我觉得一行的代码不加花括号,再换行好看,而且像if,foreach花括号我都换行 :joy:

3年前 评论

除了作用域,全中 :joy:

3年前 评论

忙的时候不会思考怎么优雅,不忙的时候慢慢细磨。

3年前 评论

这样写不行吗?

 let code  = isArea ? this.getAreaCode(value,check,type) : this.getCodeByArea(value);
3年前 评论
lyxxxh (楼主) 3年前
李小明 3年前
zxk 3年前
Mr-houzi 3年前
  1. 没太看懂第二条 if else 哪里不好。。
  2. 不太赞同写一个本地作用域代替一个 where 条件,多个条件的情况下需要很了解每个作用域,但是直接 where 能解决的事情,个人认为这种有点过度封装,而且后期维护很难,还要再去看一下作用域的具体含义
3年前 评论
lyxxxh (楼主) 3年前
风吹过有夏天的味道 3年前
飞飞鱼 3年前
ZLSN 3年前

不错,大部分都是跟你推荐的一样,尤其是query():joy:

3年前 评论
giao哥

我就是这样来写代码的 哈哈

3年前 评论

代码写得好,换人换的早 :relieved:

3年前 评论

代码少了 else 看起来简洁了,但是很容易出现疏忽,如果条件不成立的话,还要往回看代码,很难看出覆盖了所有分支,增加了心智负担。

3年前 评论

感觉该啰嗦的不能省,因为写的时候开心了,回头改的时候可能因为一些小技巧,改出bug,JAVA那么繁琐还是那么流行,没有规矩不成方圆

3年前 评论

复杂逻辑先写 汉字描述 再写具体代码

1.xxx
 // todo
  1.1xxx
   // todo
  1.2xxx
  // todo
2.xxx
// todo
3年前 评论

github上有一个项目叫 clean code,上面有你所有需要知道的写代码技巧。

3年前 评论

之前遇到个公司项目一个if 1000行代码 还不算else里面,而且7-8层if层数,里面还有大量的foreach循环查数据库 想想就刺激 一个接口查询数据库上千次的都有, 但是那个技术总监还JB说,我们不考虑重构,已经稳定运行了2年,第二天我就闪人了。

3年前 评论
李小明 2年前
颠倒的玉石

if不加花括号或者if写在一行换行能扣钱么.......

3年前 评论

其实楼主只是建议而已不必太认真,想要优雅写法 ‘Python ’ 就好了 ,

2年前 评论

代码加空格只是习惯性用 Ctrl+L 命令,另外使用模型类的人也是不嫌麻烦 :joy:

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
未填写
文章
87
粉丝
105
喜欢
480
收藏
717
排名:109
访问:8.7 万
私信
所有博文
社区赞助商