iT邦幫忙

0

已刪文30

  • 分享至 

  • xImage

已刪文

看更多先前的討論...收起先前的討論...
像我之前覺得受用的建議是

問別人問題前,想辦法自己先找答案
人的注意力有限,控制在3分鐘內講出問題
提問題時,告訴別人自己有做過甚麼嘗試

等等,那別人就會很樂意去協助你,醬
你這串留言算是所有人的地雷吧,沒自己先找答案就問問題,當我們很閒是嗎??? XD
PPTaiwan iT邦好手 1 級 ‧ 2023-08-24 11:29:39 檢舉
你可以將問題去詢問 GPT4 他會給你很多回應,並回應更多細節問題!!
我研究完了才問的鴨 😢
我天天在用GPT4,他這次的回答有點幫不上忙,我才問滴
天黑 iT邦研究生 5 級 ‧ 2023-08-24 14:20:56 檢舉
如果是效能 先找工具或者自己寫一些method來檢測哪些地方需要的時間比較長 然後寫測試 確保修改前後邏輯一致 應該就這樣吧
PPTaiwan iT邦好手 1 級 ‧ 2023-08-24 14:40:27 檢舉
>>大夥在遇到要優化別人(前輩,有些離職了)寫的代碼時,該怎麼開始,哪些方向跟要點很受用

靠你自己的經驗與想法去「解決問題」,但不用想說之前原本的程式人員是怎麼寫的,那己經不可考的就以你自己的想法去做就好。

我現在手頭上有一個己經過 10 年還在運作的案子要進行功能與新增功能與換皮,本來是VB.NET 現在改成 VB.NET + C# 的網站,這網站是台灣經濟的數據資料庫。我也覺得這網站的內容有很多都可以寫成 TSQL 預存程序,因為都己經固定也沒有多大的變化往後也可以改成以 API 的方式進行,這是我的理想!!

但結果是「管他那麼多」跟我配合的人只是拿之前的 CODE 再改成現有的 HTML + CODE 變成新的,但裡面有什麼其他拉里拉雜的程式他也是一問三不知,那我問多了他也不知道。那我就只好看著舊網站執行後看 SQL SERVER 去查是下達什麼語法,再反過來去查數據是什麼,改寫之後變成新版的功能需求。但「理想」與「現實」是不會共存的,就跟「魚與熊掌不可兼得」是一樣的,就只有時間內完成專案,專案完成沒有事做就看看其他的等案子來。

從後端先去一個個測試,執行的過程可能碰到資料庫的部份,進行反查執行這過程再去看這部份試著有沒有改善的機會。我不知道你提出的「優化代碼,讓機器跑,其效率能提升」這是什麼系統還是只是一個網站內部系統呢??
「優化代碼,讓機器跑,其效率能提升」我的case 主要是指機械臂系統,讓機台處理每次任務的速度能提升
PPTaiwan iT邦好手 1 級 ‧ 2023-08-24 16:40:48 檢舉
也...那你實際想問的跟你現在提出來的問題,要大家回答的可能就幫不上忙了。 裡面太多有商業版權的問題了
所以我想說,這次遇到,就問大方向,至少小弟以後keep in mind ,遇到類似的問題都能依照這個條理,不至於手忙腳亂
而且這個痛點,很多人都會遇到,也算能幫到其他人
補充一下剛剛貼的回答,雖然弱弱的我沒寫過大型程式,不過猜測可讀性和可擴充性應該還是比位元運算更重要吧!
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
2

初入一個專案時,通常會先了解整個行政作業流程,SOP,比如說案件怎麼跑
再來我就會從頭至尾,跑完某個案子
接著是將所有情境的案子都測試一次,觀察程式碼與庫種種行為...
這樣對我來說...很快就會上手

所謂的優化似乎也有點籠統,看是效能、功能或是程式碼美化XD?

因我主攻是Web App,針對此塊來說,最重要的就是使用者感受,所以我們會提供線上問卷,大家對使用上有什麼訴求、覺得哪裡很慢等等,因為他們是最直接且長時間感受的,利用收集來的資料去優化效能、精進功能等

受用了,謝謝建議/images/emoticon/emoticon37.gif

5

其實,您的問題確實不太好回答。
也不能說您問的不好。而是本身這個問題。
理論上是大多數人的痛處。

畢竟,所謂的優化程式碼。一般都是經驗的傳承。
也就是你採雷了才能知道。

其實我個人的經驗。再碰第一次別人的代碼之前。
會先大略看一下,這專案的架構為何、分了幾個區域、
有無元件的使用對應、有無物件的使用對應、有無視圖的使用對應....

之後選擇其認定的範圍查看。
一般來講,會先由啟動位置來查看對應的載入。啟動位置指的是路由性的、或是 index 或是 main、start....
等等一開始的地方。並從中去看預設需要載入的中央控制....等等。

喔~謝謝大神細心的回答 /images/emoticon/emoticon41.gif

sam0407 iT邦大師 1 級 ‧ 2023-08-29 10:57:08 檢舉

回錯樓了...要回clouddaaiyoga的...

補充一下剛剛貼的回答,雖然弱弱的我沒寫過大型程式,不過猜測可讀> 性和可擴充性應該還是比位元運算更重要吧!

要是真為了效能改位元運算也OK呀,重點是要加上清楚的註解啦!避免過段時間連改程式的人自己都看不懂~~

其實,位元運算我還真的有再用。

1
sam0407
iT邦大師 1 級 ‧ 2023-08-25 12:16:26

這是IT生涯中經常會遇到的情形,借用聖嚴法師名言:面對他/接受他/處理他/放下他,這真的是可以成為您人生受用的建議~~至於下方的擴充解釋是個人見解,希望也能幫到您!

  1. 面對他:先確認目標,優化代碼讓效率能提升太攏統,目前程式執行時間是幾秒?客戶/主管要求要幾秒才達標?

  2. 接受他:確認有拿到所有的原始碼,畢竟有人已離職了嘛,乖乖從頭開始K程式碼,先大略的看就好,Python有個稱號是"膠水語言",所以先確認有沒有呼叫外部執行檔?外部執行檔和執行速度有關就再追相關原始碼公司裡有沒有?再來是了解整體程式的架構,找出影響效能最大的的那一段程式碼

  3. 處理他:仔細一行行的看這一段程式碼,了解程式效能的瓶頸所在,找方法改善他,如果真的認為沒有優化空間,試試CPython或其他語言

  4. 放下他:不管最後您的嘗試是否成功,記取經驗並作傳承或分享,然後快去作其他的事吧!!!

謝謝大神條理很清晰

1
clouddaaiyoga
iT邦新手 5 級 ‧ 2023-08-27 02:39:24

把乘除法改成位元運算,這樣的回答會太淺嗎?畢竟弱弱的我功力也不高!

不會,還是謝謝泥回答
任何回答只要是經過認真思考過的就有其價值
謝謝你的建言

1
shing_pascal
iT邦新手 2 級 ‧ 2023-08-28 08:55:00

指機械臂系統,讓機台處理每次任務的速度能提升
這個才是重點。
你應該注意2個問題。
1、 機械臂 的 執行最短路徑。
2、 機械臂 的 執行速度。
否則就算 你的代碼再怎麼優化。
客戶還是會說慢。

說到 python.
我曾看過一位大神這樣寫。以下是舉例,不是實際程式。
CAST(A,(TRIM((CONVERT(INT,B)+"AAA")))
一行就寫完。沒有註解。夠優化了。
後面接的人就傻眼了。
我自己也曾遇到要翻寫自己2年前寫的程式。
然後我自己也傻眼了。
1、程式優化過。
2、沒註解。

優化代碼 的 重點 要在於 自己和其他人都能看懂、易維護。
因為我們不是程式設計天才。

酷!哥的觀點很棒,從我沒想到的面向切入,但感覺很有用

0
Dylan
iT邦新手 5 級 ‧ 2023-08-28 14:22:20

優化程式碼對我來說大致分三種

  1. 易讀性的優化
  2. 效率上的優化
  3. 可靠性的優化
  • 先慢慢trace祖先的留給你的code,當你覺得有些地方看不懂的時候,或許易讀性優化的時刻出現了,可以幫他加上註解或是重構成更清楚的架構
  • 至於效率的部分,這就要看你的程式用途在哪了,如果資料量體很大時,那可能就要坐在馬桶上想想看有沒有更好的算法
  • 可靠性最簡單的辦法就是幫每個function寫個測試,看有沒有哪個面向沒考慮到的

我通常都以易讀性為重,畢竟我們寫出來的東西終究還是人在看的

0
c9103205
iT邦新手 5 級 ‧ 2023-09-12 01:48:52

最簡單的就是看懂以後加上註解
一堆人自以為自己的 code 很 clean 不用註解

事實上是當業務一複雜,文檔不齊全,又沒註解,又面對各種自以為創意的code
對維護的人來說真的是地獄

我要發表回答

立即登入回答