强制缩进对于程序员来说是好事还是坏事? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
jianghu52
V2EX    程序员

强制缩进对于程序员来说是好事还是坏事?

  •  
  •   jianghu52 2013-09-25 11:16:55 +08:00 5971 次点击
    这是一个创建于 4402 天前的主题,其中的信息可能已经有所发展或是发生改变。
    刚看了一个帖子,有人问一个没有了缩进的python文件,怎么能还原代码逻辑。我想了半天,真觉得没办法。
    有人说强制缩进是为了统一代码风格。就我个人来说,我觉得这个倒不是最主要的原因。我认为的强制缩进的最主要的好处是,让人不敢写那么长的函数了。
    因为一旦长了之后,虽然有缩进,你要不停的上下翻页来确定这行代码到底归属于哪一层逻辑。虽然现在不少编辑器提供了缩进线,但是有时候嵌套多了,还是会比较累。另外,这样就潜意识的让你多分解逻辑,做成松耦合的函数。
    强制缩进我觉得最不舒服的地方在于,对于协作团队来说,尤其是有各种编辑器的团队来说,简直就是灾难。我的团队里面我偏爱st,有人喜欢用editplus,还有人用emeditor,美工用notepad++,当然还有人用eclipse。虽然大家都把tab 设置成了4个空格,但是经常有因为输入法的问题,导致默认的4个空格不正常的问题。
    34 条回复    1970-01-01 08:00:00 +08:00
    y0
        1
    y0  
       2013-09-25 11:21:27 +08:00
    因为输入法的问题…… 你说的是全角空格之类的吗?
    davepkxxx
        2
    davepkxxx  
       2013-09-25 11:23:20 +08:00
    不喜欢,但是无所谓,因为我不会用python写大的项目,也不会尝试和其他人一起写。
    jybox
        3
    jybox  
       2013-09-25 11:25:14 +08:00
    和花括号缩进没多大区别,Python 文件 没了缩进就好像 C 文件没了花括号。
    全角空格什么的,IDE 或编辑器是会有提示的吧。
    DaniloSam
        4
    DaniloSam  
       2013-09-25 12:08:42 +08:00
    关输入法什么事?

    程序员还用中文字符??????????
    zhujinliang
        5
    zhujinliang  
       2013-09-25 12:11:06 +08:00   1
    个人很反感依赖缩进,代码逻辑这么重要的事用一个透明的东西来掌控,太没安全感了。

    对于python代码丢失缩进一事,我想说的是:报应
    chloerei
        6
    chloerei  
       2013-09-25 12:18:04 +08:00
    我既用 Ruby 又用 CoffeeScript,强制缩进不是很大的问题。如果团队成员不能都做到对自己代码质量高要求,那么就成问题了。
        7
    yakczh  
       2013-09-25 12:28:43 +08:00
    所以象网站这种需要短平快,快速成型,快速更新的东西不适合用python来搞,不然大部分时间用在调整缩进上,python适合搞一些跑在后台,要求精益求精的这种东西
    yakczh
    funagi
        8
    funagi  
       2013-09-25 12:33:47 +08:00
    > 有人问一个没有了缩进的python文件,怎么能还原代码逻辑。
    这已经不算是一个有效Python代码文件了,因为原本正确的代码内容已经被破坏了,你要明白,缩进是Python语言的一部分,而不只是一种代码风格。

    > 有人说强制缩进是为了统一代码风格。
    同上

    > 但是经常有因为输入法的问题,导致默认的4个空格不正常的问题。
    我本来以为你是指你输入了非期望的数据,既然是非期望的数据那就不能归罪空格。
    但后来想想,是不是指编辑器没有使用等宽字体?
    至于st,我记得处理宽字符显示会出问题。

    P.S.回过头重新看一遍,难道楼主只有第一句话是指Python,下面说的那些还包括其它语言?
    9hills
        9
    9hills  
       2013-09-25 12:40:41 +08:00   1
    >有人问一个没有了缩进的python文件,怎么能还原代码逻辑

    这就好比c里面删除所有大括号还让还原代码逻辑一样
    FrankFang128
        10
    FrankFang128  
       2013-09-25 12:47:04 +08:00
    缩进的空格是四个四个敲出来吗?太麻烦了。我都是Tab=4个空格用的。
    raincious
        11
    raincious  
       2013-09-25 12:51:12 +08:00
    @davepkxxx 替可怜的空格键表示同意……
    lisztli
        12
    lisztli  
       2013-09-25 12:54:05 +08:00
    @yakczh 同意,php是世界上最好的语言。
    mengzhuo
        13
    mengzhuo  
       2013-09-25 13:15:54 +08:00
    @lisztli 本来不支持OOP的,5以后才支持,引入函数根本就不明确,PHP怎么可能称得上最好
    yakczh
        14
    yakczh  
    /div>   2013-09-25 13:19:57 +08:00
    @lisztli 严重不同意 这种说法跟天朝是世界上最好的国家一样用来yy的,我的原话是快速开发的网站不适合python来,python适合后台精益求精的一些东西,如果yum,emerge这类工具 根本没提及php
    yuelang85
        15
    yuelang85  
       2013-09-25 13:22:09 +08:00
    @raincious 难道说,你的锁进是敲空格敲出来的????


    楼主缺钱了,嗯。
    raincious
        16
    raincious  
       2013-09-25 13:26:55 +08:00
    @yuelang85 嗯。。。首先我很少写Python风格的代码嗯。。。其次,我用Tab的嗯。。

    但是呢,据说推荐还是会用空格的。只是有些编辑器会自动将Tab转换成空格嗯。
    lisztli
        17
    lisztli  
       2013-09-25 13:42:31 +08:00
    @mengzhuo
    @yakczh

    我主业是用python的。
    Mutoo
        18
    Mutoo  
       2013-09-25 13:50:07 +08:00
    妹子学python的时候,书上代码分页后那行的缩近老是打错
    windylcx
        19
    windylcx  
       2013-09-25 13:59:04 +08:00
    好事,其实统一配置一下不会花多少时间,但统一风格明显来带巨大好处.
    Keyes
        20
    Keyes  
       2013-09-25 14:09:53 +08:00
    @windylcx 非常赞同
    yuelang85
        21
    yuelang85  
       2013-09-25 14:15:00 +08:00
    @raincious 这都是配置出来的
    tntC4stl3
        22
    tntC4stl3  
       2013-09-25 14:42:29 +08:00
    @Mutoo 我觉得这个跟书印刷排版也有关系,尤其是《Python 核心编程》分页处的代码,基本都要自己考虑下。
    min
        23
    min  
       2013-09-25 15:53:49 +08:00   1
    简单地把事物归到好或者坏上面去毫无意义

    这只是很多选择中的一种而已
    levn
        24
    levn  
       2013-09-25 16:33:16 +08:00
    不是copy/paste不方便吗?
    Golevka
        25
    Golevka  
       2013-09-25 20:11:47 +08:00   1
    连词法都没有形式化定义的语言也只能呵呵了. 顺便我们吐槽依赖缩进的语法, 并不表示我们平时写代码时不缩进.
    SoloCompany
        26
    SoloCompany  
       2013-09-25 20:39:15 +08:00
    给代码签入加一个规则,不允许使用字符 0x9,tab不一致的问题就解决了
    至于每个代码签入者怎么解决编辑器的问题,作为码农连这个都解决不了的话可以直接辞职了
    sumanx
        27
    sumanx  
       2013-09-25 20:42:49 +08:00
    和这个一起看,效果不错:http://www.v2ex.com/t/83482
    NemoAlex
        28
    NemoAlex  
       2013-09-25 21:16:18 +08:00 via iPhone
    这个帖子也太搞笑了
    各种亮点
    BOYPT
        29
    BOYPT  
      &nbp;2013-09-25 23:02:11 +08:00
    "大部分时间用在调整缩进上"

    哈哈哈哈哈哈
    xingzhi
        30
    xingzhi  
       2013-09-26 00:59:28 +08:00
    可能专注于某种语言,就自然会去习惯或者遵守这个语言的相关规范了。

    我主业写 python,因此我会以 PEP8 的规范要求自己。。。

    缩进本身不能简单以好坏来分,但写出可读性高的代码,遵守语言的编码规范,这难道不是一种职业素养?
    vivianalive
        31
    vivianalive  
       2013-09-26 01:30:30 +08:00
    代码可读性实际上就是代码可维护性... 缩进又简单又好用.有什么好抱怨的啊.
    jamiesun
        32
    jamiesun  
       2013-09-26 08:08:58 +08:00
    快速网站开发,怎么快法,php,asp,jsp直接写,这样是快,不过是快而脏,如果用上php+框架,那就没有比python有多优势了。用过bottle,flask就知道python可以更快速开发了。

    用了这么多年,没觉得缩进是问题,反而括号的,每次正儿八经写代码之前都去调整下style。
    jianghu52
        33
    jianghu52  
    OP
       2013-09-26 08:37:09 +08:00
    关于输入法缩进问题,我又有欲望新开一个帖子了。不过先在这里跟大家解释一下。我的机器上所有的默认输入法都是英文的。如果需要输入中文,都是用快捷键切出来的。但是我的不少同事竟然默认的都是中文输入法。我实在不能理解一帮专业的程序猿默认输入法竟然是中文的。所以你明白的,当你打开某个文件,然后写准备在其中插入代码的时候,一个回车下去,表面上缩进是变的跟上面一样了,但是实际上由于语言的不同,缩进在不同的编辑器里面显示的样子是不一样的。因此造成了缩进不统一。
    xiaket
        34
    xiaket  
       2013-09-26 08:46:07 +08:00
    @raincious read pep8 twice, and then again

    话说这种话题丢进月经贴里吧, 看得烦了.
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1058 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    Worldis powered by solitude
    VERSION: 3.9.8.5 25ms UTC 18:31 PVG 02:31 LAX 11:31 JFK 14:31
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86