[問題] 程式碼大量重複卻不知如何解決

看板Programming作者 (woody)時間7年前 (2017/10/18 14:16), 編輯推噓4(4023)
留言27則, 11人參與, 7年前最新討論串1/2 (看更多)
給一個字串,若遇到字母,則依照字母順序將它改成 k 個字母後的字母,且不改變大小寫 若超過 Z/z 則回頭從A/a算起 且 k 必定大於 0 且小於等於 9 附上26個字母讓大家方便查詢 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 例如字串為 x3W4jO/a 且 k = 6 則改成 d3C4pU/G 我的寫法:https://i.imgur.com/XBIdN7s.jpg
但是第 3~7 行 與 9~13 行重複性太高了,根本只差在第5行的 'Z' 與第11行的 'z' 因此我改成 https://i.imgur.com/T4YPD3L.jpg
但明顯是錯的,原因在23~26行的註解 不知道各位有沒有漂亮的寫法呢? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 68.181.88.39 ※ 文章網址: https://www.ptt.cc/bbs/Programming/M.1508307377.A.359.html

10/18 14:52, 7年前 , 1F
我覺得這不是很大量
10/18 14:52, 1F

10/18 15:18, 7年前 , 2F
與其糾結在這幾行程式碼上還不如把
10/18 15:18, 2F

10/18 15:18, 7年前 , 3F
公開函式/方法設計一下比較實在
10/18 15:18, 3F

10/18 15:53, 7年前 , 4F
還以為多大量
10/18 15:53, 4F

10/18 15:54, 7年前 , 5F
等你上班會看到一個block重覆十幾次
10/18 15:54, 5F

10/18 15:54, 7年前 , 6F
每一個block可能一百行 那也沒多大
10/18 15:54, 6F

10/18 16:04, 7年前 , 7F
這麼簡單的事情上面搞最佳化就像小學生
10/18 16:04, 7F

10/18 16:04, 7年前 , 8F
比誰寫字比較快一樣
10/18 16:04, 8F

10/18 17:53, 7年前 , 9F
即使是小學生比寫字比快,也是可以
10/18 17:53, 9F

10/18 17:53, 7年前 , 10F
練到基本功的。給個提示,去看看ASC
10/18 17:53, 10F

10/18 17:53, 7年前 , 11F
II表中字母的排列順序,你再思考一
10/18 17:53, 11F

10/18 17:53, 7年前 , 12F
下條件判斷式怎麼合併怎麼寫。
10/18 17:53, 12F

10/18 19:53, 7年前 , 13F
圖2列22前算個z, 列23就可改為 if(s[i] > z)
10/18 19:53, 13F

10/18 20:30, 7年前 , 14F
年紀太小做推理訓練不會有好的成果。
10/18 20:30, 14F

10/18 20:31, 7年前 , 15F
清楚比簡短重要 對新手如此 老手也如此
10/18 20:31, 15F

10/18 20:37, 7年前 , 16F
在23行加上用s[i]的值區分大小寫就能有正確
10/18 20:37, 16F

10/19 00:08, 7年前 , 17F
怎麼覺得好像在密碼學看過這東西...
10/19 00:08, 17F

10/19 00:09, 7年前 , 18F
凱撒密碼 ?
10/19 00:09, 18F

10/19 08:57, 7年前 , 19F
抽個function 就好了。像 char shiftC
10/19 08:57, 19F

10/19 08:57, 7年前 , 20F
har(char c, int charsToShift, char
10/19 08:57, 20F

10/19 08:57, 7年前 , 21F
lowerBound, char upperBound)
10/19 08:57, 21F

10/19 08:58, 7年前 , 22F
不在lower & upper bound 中間的就直
10/19 08:58, 22F

10/19 08:58, 7年前 , 23F
接回傳原字
10/19 08:58, 23F

10/22 21:43, 7年前 , 24F
你可以去買本clean code 或重構的書
10/22 21:43, 24F

10/24 13:45, 7年前 , 25F
別用-=, 有個運算元叫做"%"
10/24 13:45, 25F

10/24 13:45, 7年前 , 26F
用%會精簡很多
10/24 13:45, 26F

12/12 07:20, 7年前 , 27F
推薦讀一下 如何撰寫0錯誤程式 這本書
12/12 07:20, 27F
文章代碼(AID): #1Pvl6nDP (Programming)
文章代碼(AID): #1Pvl6nDP (Programming)