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