论坛首页 海阔天空论坛

师傅领错门,害了你个人 - ruby/rails新手避免入错门

浏览 73573 次
该帖已经被评为精华帖
作者 正文
   发表时间:2008-11-11   最后修改:2008-11-11
引用
什么资深会员,我看你是瞎掰能手,给出一段菜鸟代码,还想作为规范!


光说不练呢。。。 没啥意思。

从偶尔泄露的代码看,这边ruby水平感觉不错的,快客王,gigix,其他的人印象不深。

兄弟,来点实际点的代码吧
0 请登录后投票
   发表时间:2008-11-11   最后修改:2008-11-11
估计不能说话了.....
----------------------------
鸟的...算错数了......
本板要50点....
0 请登录后投票
   发表时间:2008-11-11   最后修改:2008-11-11

哦,抱歉,看错了。编辑掉。。。

0 请登录后投票
   发表时间:2008-11-11  
严重怀疑那个titans是个马甲书托。反正不用多理他,浪费时间。何必这么多人跟他一个人过不去。大家眼睛都很亮。
0 请登录后投票
   发表时间:2008-11-11  
请问,优点是什么,如果你清楚,请诉说一,二
0 请登录后投票
   发表时间:2008-11-11  
playfish 写道
严重怀疑那个titans是个马甲书托。反正不用多理他,浪费时间。何必这么多人跟他一个人过不去。大家眼睛都很亮。

技术是严肃的,并非大家和他过不去
0 请登录后投票
   发表时间:2008-11-11  
titans 写道
什么资深会员,我看你是瞎掰能手,给出一段菜鸟代码,还想作为规范!难道写操作系统教材的人要把真实的操作系统里面进程调度的算法都写全了。我说你不尊重别人就是因为你的无理取闹和没根据的瞎掰。

你不看偶后面的文字么?
引用

而且在实际开发中,作为最佳实践,最后一个else判断完全是不必要的,大家可以想想什么情况下会出现跑到最后一个else?嗯,只有在恶意构造url攻击的情况下,这样我们完全可以改成:
User.find_by_name_and_active_code_and_active(params[:name], params[:active_code], false)

在改成这样的情况下代码应该如何重构还用偶多说么?虽然偶是Ruby/Rails菜鸟,但是这个代码也是呼之逾出阿:
def pro_activate
  user = User.find_by_name_and_active_code_and_active(params[:name], params[:active_code], false)
  if user
    flash[:notice] = "您的账户已经处于激活状态,请勿重复激活!"
  else
    user.update_attribute(:activated , true)
    flash[:notice] = "恭喜您,您已经成功激活了您的账户!"
  end
end


至于你说的明码密码,你随便找一本Rails的书,比如Rails作者DHH的Agile Web Development with Rails,里面都是 t.column :hashed_password, :string

偶承认偶是个rails菜鸟,菜鸟都能从这个书中找出那么多最佳实践的反面教材,这本书不如叫Rails敏捷开发最佳菜鸟鉴定术第一卷...
1 请登录后投票
   发表时间:2008-11-11  
titans 写道

7. if user != nil && user.is_activated == false
user.is_activated == false ??? 这叫啥代码阿? 偶的天哪,李刚老师可能是为了保持风格统一,后面果然还有 user.is_activated == true ,这是偶看到搞笑的代码了...

这样的代码可读性不错,当然给初学者看比较合适。这样笑话人家不太地道。

差点漏了这个,您一定觉得,if (1 == 2) == false 这个代码可读性不错了...
0 请登录后投票
   发表时间:2008-11-11  
我来来个稍微简洁点的版本
def pro_activate
  if user = User.find_by_name_and_active_code_and_active(params[:name], params[:active_code], false)
    user.update_attribute(:activated , true)
    flash[:notice] = "恭喜您,您已经成功激活了您的账户!"
  else
    flash[:notice] = "激活失败,您的账户可能不存在或者已经激活,请重新检查你的帐户。"
  end
end


这个函数是用来激活用户的,那么出现特殊情况的,要么就是用户没有注册,尝试进行攻击,或者已经激活过了。所以该写成这样就可以满足使用了。
0 请登录后投票
   发表时间:2008-11-11  
Readonly 写道

差点漏了这个,您一定觉得,if (1 == 2) == false 这个代码可读性不错了...

汗,这个代码,如果我看到组员要这样写,是要游街的。
1 请登录后投票
论坛首页 海阔天空版

跳转论坛:
Global site tag (gtag.js) - Google Analytics