Fw: [問卦] 寧寧雞寫程式時是用space還是tab縮排

作者: reinforce15   2017-08-31 14:51:58
※ [本文轉錄自 Gossiping 看板 #1Pfw8CCA ]
作者: reinforce15 (可魯貝洛斯) 看板: Gossiping
標題: Re: [問卦] 寧寧雞寫程式時是用space還是tab縮排
時間: Thu Aug 31 13:43:38 2017
※ 引述《justwe5566 (傑士塔紗路的老公)》之銘言:
: 乳提
: 可愛的寧寧雞
: http://i.imgur.com/P5c7HIF.jpg
: 最近開始學寫程式
: 不知道寧寧雞縮排都用space還是tab
: 好想知道喔
: U咪U寧寧雞是space派還是tab派的八卦?
你好 我好 各位姆咪好
我是小光 http://i.imgur.com/1fhF9x3.jpg
我覺得她應該是用space吧
不過本光還是喜歡用快捷鍵一鍵縮排 讚
話說第二季好好看喔 那隻貓也好可愛
第二季 第09分第34秒處
http://i.imgur.com/35hXCjk.png
上圖是寧寧原本的code 把他轉OCR
//
void DestructibleActor::ReceiveDamage(float sourceDamage)
{
//
auto resolvedDamage = sourceDamage;
for (const auto& debuf:m_debufs)
{
resolvedDamage = debuf.ApplyToDamage(resolvedDamage);
m_currentHealth -= resolvedDamage
if (m_currentHealth <= 0.f)
{
m_currentHealth = 0.f;
DestroyMe();
}
}
}
而且寧寧說執行時會卡住
好 讓我們來看看問題出在哪
首先
請各位姆咪們先看到第37行 DestroyMe()
有沒有發現? 這個DestroyMe()只有在血條小於等於0時才會被call
再來請姆咪們看到第34行這裡
也就是說 如果當 m_currentHealth 小於等於 0.f時
會一直是true的狀態 而一直去重複執行DestroyMe()
但又因DestroyMe()之前已經被call過了
可能會造成記憶體沒有東西可以讓DestroyMe()消除
所以記憶體有可能會被違法存取
而導致系統不穩 最終當機
本光想到的解法是把 } 號移到這裡
像這樣
//
void DestructibleActor::ReceiveDamage(float sourceDamage)
{
//
auto resolvedDamage = sourceDamage;
for (const auto& debuf:m_debufs)
{
resolvedDamage = debuf.ApplyToDamage(resolvedDamage);
}
m_currentHealth -= resolvedDamage
if (m_currentHealth <= 0.f)
{
m_currentHealth = 0.f;
DestroyMe();
}
}
如此一來 既能把第30行的for 與第34行的if分離開來
不會重複去DestroyMe
又能把Damage丟到迴圈外
不過有點疑問的是...
這樣寫不會在編譯時就跳出警告 或就直接出錯嗎?
我在猜啦 可能造成遊戲卡死的原因不是只有這個
其他地方可能也有logic上的問題
還有寧寧的compiler左側那欄我怎麼看都沒References
這樣沒問題嗎
啊對 海子那個應該可以用Qt來做到
只是沒她的source code
作者: CloseFeather (克洛斯.菲勒)   2016-08-31 13:45:00
先推 免得人家以為我看不懂
作者: canblow (可吹)   2016-08-31 13:45:00
肥宅的時間真多
作者: abc0922001 (中士abc)   2016-08-31 13:45:00
這個分析早就看過了
作者: SuperUp (( ̄▽ ̄#)﹏﹏)   2016-08-31 13:45:00
大哥 今天天氣很好耶 不考慮出個門嗎?
作者: limoncool (億載金城武 Limoncool)   2016-08-31 13:45:00
文組的看不懂
作者: sysop5566 (批踢踢半熟手)   2016-08-31 13:47:00
小洸棒棒der
作者: brad84622 (brad84622)   2016-08-31 13:52:00
作者: kirisame   2016-08-31 14:01:00
哩金變態
作者: SeijyaKijin (代時上克下的鬼邪天opeop)   2017-08-31 14:53:00
看動畫學叩定
作者: Becuzlove (阿嗚阿嗚阿嗚嗚~)   2017-08-31 14:54:00
你在專業甚麼啦XD
作者: surimodo (好吃棉花糖)   2017-08-31 14:55:00
用tab有些語言有機率出錯 學校都是教space
作者: siscon (laisan)   2017-08-31 14:55:00
誰用tab縮排 我跟他拼命
作者: wryyyyyyyy (蜥蜴長老)   2017-08-31 14:56:00
文組看不懂QQ
作者: tamixavier (SAKI)   2017-08-31 14:56:00
為什麼不用break?
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-08-31 14:57:00
平常都用 2-space 的 (是說這邊 break 出來再 Destroy 就好?
作者: Bencrie   2017-08-31 14:58:00
linux kernel 都用 tab 縮排,快去罵 Torvalds
作者: OppOops (Oops)   2017-08-31 14:58:00
你這樣是算錯的吧, resolvedDamage只會算到第一種
作者: vanceliu (Van)   2017-08-31 14:59:00
我都是用tab 縮排欸 qq
作者: OppOops (Oops)   2017-08-31 14:59:00
不然幹嘛寫for迴圈最後一種
作者: Arminius (奇怪的歐吉桑)   2017-08-31 15:00:00
哪個學校那麼無聊教這個。用哪種是要配合所在團隊/專案
作者: web946719 (韋伯就是漏氣依舊)   2017-08-31 15:00:00
是在專業什麼啦
作者: rofellosx (鏖)   2017-08-31 15:00:00
space?tab?不是都自動縮嗎
作者: Arminius (奇怪的歐吉桑)   2017-08-31 15:01:00
的coding standard, 整個專案要一致, 個人不能隨意亂弄
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-08-31 15:01:00
不過也有看過說因為 tab size 可以用編輯器調所以用 tab
作者: a840901 (蒼天不太妙)   2017-08-31 15:01:00
快推不然別人以為我看不懂
作者: arrenwu (鍵盤的戰鬼)   2017-08-31 15:03:00
寧寧雞好可愛 >D<我記得 Python 縮排一定要用 Tab 吧C++ 用什麼都沒差的樣子
作者: Zero0910 (みくに最高≧▽≦)   2017-08-31 15:05:00
VC可以設定要tab還是space 我個人是比較喜歡tab
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-08-31 15:05:00
python 不用喔 記得只要一致就好了Makefile 是一定要 tab 啦
作者: Zero0910 (みくに最高≧▽≦)   2017-08-31 15:08:00
作者: lucifiel1618 (Lucifiel)   2017-08-31 15:12:00
媽的誰寫python再給我用tab的我還不砍死你PEP他媽給我罰抄一千遍
作者: lay10521 (小伊達)   2017-08-31 15:14:00
IDE可以轉換
作者: Bencrie   2017-08-31 15:14:00
我寫 python 就是用 tab 在縮排 der,PEP 是什麼可以吃嗎
作者: seaEPC (沒看見,我沒看見 >_<)   2017-08-31 15:17:00
Tab vs. space 永恆的戰爭 tab go die
作者: ivstitia (MakiChanMyWife)   2017-08-31 15:18:00
作者: k03004748549 (蜆)   2017-08-31 15:18:00
這串越來越歪了 tab 甲賽
作者: dieorrun (Tide)   2017-08-31 15:19:00
我都這行用tab下一行就用space 每個人都想殺我
作者: th1279sky (用百合淹沒世界)   2017-08-31 15:19:00
明明editor調一下,tab就可以自動space了,就是一堆人不用。
作者: kawazima8869 (Taiwan川島)   2017-08-31 15:21:00
其實可以把tab的output改成4個空格R
作者: emptie ([ ])   2017-08-31 15:23:00
現在的IDE大部分都會把tab換成space吧 我記得python只吃的是space吧
作者: seaEPC (沒看見,我沒看見 >_<)   2017-08-31 15:25:00
PEP8只說偏好space,你要用tab還是可以吧,3不能混用就是
作者: wxtab019 (天霜凝月)   2017-08-31 15:28:00
不過有時候忽然想到程式可能這樣改又不想開complier
作者: genesic (嗯?)   2017-08-31 15:28:00
如果要這樣改的話,我推薦DestroyMe之後就直接return了
作者: k03004748549 (蜆)   2017-08-31 15:28:00
感覺加個break就可以 不用重構for的結構
作者: genesic (嗯?)   2017-08-31 15:29:00
小於0後也不用浪費時間去算後面的debuff
作者: notsmall (NotSmall)   2017-08-31 15:33:00
把tab改成space啊 搬程式完全不用考慮問題
作者: ts1993 (komi1111)   2017-08-31 15:34:00
超歪WWW
作者: spfy (spfy)   2017-08-31 15:37:00
C#是世界上最好的語言 話說到這邊 誰贊成 誰反對
作者: gofee (撞牆的青蛙)   2017-08-31 15:40:00
c#難用死了
作者: wuyiulin (龍破壞劍士-巴斯達布雷達)   2017-08-31 15:41:00
C#難用 蛤?開戰啦
作者: b258963147 (火龍果)   2017-08-31 15:46:00
專業費雯
作者: arrenwu (鍵盤的戰鬼)   2017-08-31 15:46:00
C# 有 Visual Studio 超強!
作者: shiow1026 (CannonDick)   2017-08-31 15:47:00
C C# C++ Python 站出來
作者: corlos (ナニソレ、イミワカンナ)   2017-08-31 15:47:00
文組的喔
作者: howder5566 (好der5566)   2017-08-31 15:56:00
看到Qt感動落淚耶,沒想到有人知道Qt
作者: DarkPrincex (DP)   2017-08-31 15:56:00
這東西早就老梗了還硬要提,而且你改法根本就是錯的
作者: wxtab019 (天霜凝月)   2017-08-31 15:58:00
VS不是也有C++嗎
作者: DraperyFalls (落幕)   2017-08-31 15:58:00
我的C++雖然樸素但我就是不離不棄
作者: wxtab019 (天霜凝月)   2017-08-31 15:59:00
雖然後來都用C30 comlier或直接寫機械語言了反正要燒到晶片裡測試能不能用方便就好 記事本改都ok因為用記事本最省記憶體 跑的最快
作者: dreamnook (亞龍)   2017-08-31 16:00:00
tab output用4 space飄過 js用2 space
作者: seaEPC (沒看見,我沒看見 >_<)   2017-08-31 16:02:00
語言好不好用是看用在哪 以及誰在用 _(:3
作者: hms5232 (未)   2017-08-31 16:04:00
我用TAB我驕傲
作者: weltschmerz (威爾特斯克˙悶死)   2017-08-31 16:05:00
我連按八下空白假裝tab 只差一格齊卻用tab排
作者: Zero0910 (みくに最高≧▽≦)   2017-08-31 16:08:00
對齊用到8格不會被巴頭嗎
作者: linzero (【林】)   2017-08-31 16:08:00
不同編輯軟體,Tab跳的格數不一樣
作者: seaEPC (沒看見,我沒看見 >_<)   2017-08-31 16:20:00
很多軟體預設是8格啊,譬如說vim,至於為啥這樣也是有歷史因素的,可以去翻一下wiki對tab的介紹
作者: sdd5426 (★黑白小羊☆)   2017-08-31 16:27:00
講得還挺有可能的 因為動畫跳出的錯誤訊息是記憶體錯誤
作者: linzero (【林】)   2017-08-31 16:27:00
有的軟體,按tab不儲成tab,而是直接幫你轉成4或8格空白
作者: GalLe5566 (給力5566)   2017-08-31 16:28:00
臭死了幹 等等 為啥你會在嘻洽?
作者: tLuesuGi (上杉不識庵真光謙信)   2017-08-31 16:32:00
我文組看不懂 只好推了
作者: erik777 (水樹奈奈紅白登場!!!)   2017-08-31 16:38:00
C#都自動格式化喔 誰管tab還space
作者: CP64 (( ̄▽ ̄#)﹏﹏)   2017-08-31 16:40:00
記得動畫裡就有提到問題在多殺了幾次啊 ' A')
作者: stkoso (Asperger)   2017-08-31 16:54:00
戰!
作者: gohpx (懶得想)   2017-08-31 17:07:00
IDE選的好 tab space沒煩惱
作者: kaltu (ka)   2017-08-31 17:09:00
只接受 soft tab,要用 tab 就用,但程式必須存成 space以為全世界都有義務知道你的 tab 在你的機器上是設定等於幾個 space 喔,白眼tab 只能說鍵盤上的按鍵,不能是進 code 的字元,結案。敢讓我看到 code 出現 \t 一定退會,換個地方看就長不一樣你不煩別人會抓狂
作者: Wtrmln0708 (大大大西瓜)   2017-08-31 17:18:00
反觀台灣的八點檔畫面
作者: oToToT (屁孩)   2017-08-31 17:25:00
改戰空白格數
作者: gwhmwiki (現在說書人)   2017-08-31 17:33:00
文組只看日富美
作者: winiel559 (大漢天威)   2017-08-31 17:41:00
有人不知道vim跟pycharm都能tab轉space的ㄇ??
作者: bitcch (必可取)   2017-08-31 18:22:00
destroy後加一個break也可以
作者: twetto912 (左手食指的那個繭)   2017-08-31 19:22:00
destroy 回傳一個值拿去給for 用阿
作者: lavign (一懸命部隊)   2017-08-31 19:26:00
這裡的tab是指\t吧
作者: Bencrie   2017-08-31 20:09:00
下一篇會戰大括號位置嗎?我先說我是 Allman 派 der
作者: leon1309 (迷憶之途)   2017-08-31 20:45:00
嗯…
作者: jacklinjia (Jacklin嘉)   2017-08-31 21:19:00
先推免得別人以為我看不懂
作者: toyog (toyog)   2017-08-31 21:37:00
幹快笑死,,
作者: justwe5566 (傑士塔威56)   2017-08-31 22:11:00
你在認真什麼喇...

Links booklink

Contact Us: admin [ a t ] ucptt.com