變數的使用與習慣??


#1

最近要把之前寫的討論版整個打掉重寫

因為疊太多東西 想弄一個乾淨的的 順便做一些功能拉出來獨立與一些寫法的改善

其中一個議題是變數

我以前的寫的

def unuber
  @unmber_a = 1
  @unmber_b = 10

  @number_sum = @unmber_a +  @unmber_b
end

def print 
     @number_sum
end

以前都沒發現 一般 def 內的變數 是否不用@

其實只需要

def unuber
  unmber_a = 1
  unmber_b = 10

  @number_sum = unmber_a +  unmber_b
end

def print 
     @number_sum
end

只要rails前端 或是 同 class 內的 def 要引用 在使用@

如果有需要跨class 當作類別使用 則在使用 @@

而在拉出來做獨立使用 有分共用 部分共用 但沒有很奇怪的用法大部分都用在 application底下即可 而要互相呼叫並使用class互相用法在必要的地方再使用@@

之前的寫法 感覺也不會有啥安全性的議題 單純就是不了解自己亂寫 但也不會直接影響

相關的使用習慣是否正確呢


#2

首先必須提的,你知道『工程師的鄙視鏈』咪?

簡單的來說,記憶體生存範圍混用會造成污染,如果你在另外一個地方也用到 @number_sum 且流程交雜時,該變數就會被污染到,所以才會說生存範圍 & 命名的重要性,一般來說寫小型專案不太會遇到,但 … 總有萬一不是?

然而很多東西如你所說的,真正檢查起來和安全性無關,那麼我只能和你說,剩下的就是『鄙視鏈』了

如果你打開某個網頁的原始碼,裡面充滿著凌亂的註解,該注意的沒注意到,什麼東西都欠缺考量,tag / space 縮排混用,甚至註解內有注音文,你看到這種網頁,你會尊敬它嗎?即使它外表光鮮亮麗,但你內心只想吐他口水不是?

那麼,你的東西呢?文人相輕,自古而然,所以看你的東西就知道你是什麼等級,包括你貼文的縮排空白數不一樣也是,不是嗎?然而很多時候就是因為這種鄙視才會讓人追求精進,so~ 你選擇哪種?

當然每個人都有黑歷史,因為這是學習的過程之一,且每個人都追求神的道路一樣,包括我也是,所以不需要把一些無傷大雅的缺點無限放大,但 … 如果因為這樣你說那些就不是缺點時,就真的只會被嘲笑的

(( 話說,我好像最近才吐槽某人丟去 github 的 code 裡面 tab / space 混用,他被一群夥伴嘲笑到無地自容哩||,我絕對不會出賣說他是誰 X"D


#3

哈哈 感謝jc

學習本來就是一個漫長的跑道

這個問題在各種環境 新手都會遇到

只是我最近因為一些開發案 一直在計較一些小細節 回頭看我的ROR 想要去重寫之前的創作 突然由感而發

(疑~? 我的寫法怎好像怪怪的~

所以我才提出來確認一下

我相信也很多人寫 懶得去計較 反正案子沒很大 全部都直接使用 @開頭

開啟無雙輾過去

我的個人習慣還是喜歡在後端撰寫的內容中註解用途說明 就算真的沒啥好寫 短短的一句話

這都可能讓後續幫忙開發的人可以了解你的使用內容或是回想當初自己到底是在想啥

前端最多就是標籤結尾 做個簡單註記這是哪一個標籤的結尾

蠻多小習慣 其實都可以讓後續維護可以更加的順暢

:grin:


#4

number – normal variable, 其 scope 限定於該方法(method)
@number – instance variable, 其 scope 限定於該物件(object)
@@number – class variable, 其 scope 限定於該類別(class)

scope 的選擇:越小越好
一來不容易造成污染、混淆,二來記憶體的回收也更有效率。

題外話
幾個月後看自己 code 還能改善是件幸福的事情,代表你這幾個月有學習到新的東西、功力有所增長。
如果發現改無可改,可以參考一些 design patter 範例或者閱讀常用 gem 的原始碼,這些都有助於提昇功力。


#5
其實大都是自己練習

又或者是接案  可以拿來使用

幾乎在公司  沒有人敢去用

離開台北更明顯....

最近一樣要寫MVC

但是有
ASP.NET(MVC)
ROR

全部人都直接跳ASP.NET   完全沒人要考慮ROR

但是好處說了也沒有特別吸引身邊的工程師

其實有時候多學了也是挺無力的

:sleepy:


#6

單純換個公司就好了?雖然我知道這沒有和說得一樣簡單就是,其實後期我看太多公司都是 linux base 的,ASP 是啥鬼很久沒看過了就是,當然很多人都還是會用,但…應該都無法寫太大型的產品, docker 已經滿街跑了,還用上一世代的武器其實 … 沒辦法哩,當一個 vm 還有 GUI 介面時,嗯 … 就會感覺很多餘之類的

當一個語言綁定作業系統時 … 勢必會被該作業系統箝制唄 (( 當然,另外一方面 Ruby 似乎也綁定 Linux / Unix 了 … 所以很多人為了政府標案去改 JRuby 來作弊 X"DD


#7

你沒辦法改變環境,只能改變自己(=走人) lol

ASP.NET 也沒什麼不好,只是要注意有沒有跟上趨勢
大家都在玩 docker 化, 自動化測試, CI/CD, devops,享受快速且安心的部署

ASP.NET 有沒有對應的 solution? 如果有,那很好,可以繼續用下去。
如果沒有,那這一套還能玩多久?看看 蝦皮跟 PChome 的例子。
你有選擇的話,要當蝦皮還是 PChome?這就很明顯了。


#8

單純因為這個公司 還有些東西還可以學

例如版本控管 還有硬體擴增實務(雖然都是IIS) :dizzy_face:

還有撰寫程式的一些技巧與概念

但是 一想到要寫code 要比其他平台多寫1半甚至到多一倍以上 其實都很無力

年關到了 也不好說啥 有時候 只能慢慢讓公司嘗點甜頭 先從前端導入一點點的新技術

來讓其他工程師也意識到 原來網頁已經進步到這樣子了 那我原本的code到底再浪費幾點的

只能慢慢來 哀…