V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
jukka
V2EX  ›  程序员

说说自己写过的最难懂的代码吧。

  •  
  •   jukka ·
    tangyiyang · 2015-11-19 09:52:32 +08:00 · 6374 次点击
    这是一个创建于 3300 天前的主题,其中的信息可能已经有所发展或是发生改变。

    define false true #define malloc(size) malloc(size-1) 这些只能算技巧。语义上的坑才是坑。

    我先自爆一个,毕业第一年,刚入游戏行业的时候,在做小游戏,平台是 cheap phone(MTK)。

    当时公司用的自研引擎,引擎层并不支持屏幕 90°翻转。 320x480, x->(0, 320), y->(0, 480) Leader 说过几天给加上(但是当时我并不知情)。

    然后我就按照 x->(0, 480), y->(0,320) 的前提下,开始写代码了。

    所有的角度旋转,坐标计算,全部都是在我脑子里按照 90°翻转后的坐标去写的。不管是 touch-test 还是 actor movement 。

    然后我的 BOSS 维护了一下我的代码,这酸爽。

    37 条回复    2015-11-20 10:11:27 +08:00
    ShiHou
        1
    ShiHou  
       2015-11-19 11:02:23 +08:00
    当然是写硬件代码了... 脑子里模拟十几个状态机之间互相通讯,更别说写出来的代码了。
    aheadlead
        2
    aheadlead  
       2015-11-19 11:14:06 +08:00
    汇编…
    jayzjj000
        3
    jayzjj000  
       2015-11-19 11:18:19 +08:00
    无比同意楼上,所有关于硬件的、各种机器语言的,都特么难懂的一笔

    ---

    记得 Ourcoders 里面还讨论过一个问题是要不要写注释,里面各种大牛都是各种“看不懂的代码就不是好代码,就要重构”,看的时候泪流满面,大哥帮我重构把
    rock_cloud
        4
    rock_cloud  
       2015-11-19 11:23:24 +08:00
    joewangyz
        5
    joewangyz  
       2015-11-19 11:25:05 +08:00
    大学时候的汇编大作业 还有编译器。。
    rock_cloud
        6
    rock_cloud  
       2015-11-19 11:25:33 +08:00
    https://gist.github.com/3e4845adead207159bc3.git
    之前一个项目里用到了些正则。。。现在已经看不懂了=。=
    zonghua
        7
    zonghua  
       2015-11-19 11:37:17 +08:00 via iPhone
    各种排序查找,都是嵌套循环
    DingSoung
        8
    DingSoung  
       2015-11-19 12:13:52 +08:00
    XD 曾经用汇编写过[CRC32 CRC16]( https://github.com/DingSoung/DDT/tree/master/crc)
    wizardforcel
        9
    wizardforcel  
       2015-11-19 12:24:34 +08:00 via Android
    跟 lz 差不多 一个大作业中队友把坐标弄反了 于是我想调用它的东西 就得之前加一层转换
    ifconfig
        10
    ifconfig  
       2015-11-19 12:35:23 +08:00   ❤️ 1
    三层嵌套循环,从 value 到 val 再到 v 命名,嘻嘻
    ikaros
        11
    ikaros  
       2015-11-19 12:41:49 +08:00
    感觉自己没有写过什么特别难懂的吧,无非是函数拆分模块化上处理的问题,而且用的语言很简单. 如果真要说难懂的话大概就是有切字符串的习惯, token.String()[:6]这样,不过一般都会注释这是取什么
    LioMore
        12
    LioMore  
       2015-11-19 12:52:41 +08:00
    string ZFC;
    string ZXYJ;
    int SZ;
    int BH;

    程序的变量还有对象里全是这种命令方式,以及数据库全都是这样的表和字段,谁能看懂?
    LioMore
        13
    LioMore  
       2015-11-19 12:54:21 +08:00
    不好意思,打错字,更正一下,是「命名方式」
    hackerwgf
        14
    hackerwgf  
       2015-11-19 12:59:08 +08:00 via iPhone
    三个月之前的代码感觉就毛都看不懂了
    doublleft
        15
    doublleft  
       2015-11-19 13:03:47 +08:00   ❤️ 2
    不是我的,调试别人的

    当时发现有一个 bug ,可以复现但是似乎没有任何条件,其触发随机到怀疑人生,仔细断点反复排插后发现是随机字符串生成变量然后各种传递,这个随机种子不够复杂,经常重复所以……
    viator42
        16
    viator42  
       2015-11-19 13:15:04 +08:00
    var a = <? echo $b; ?>;
    php 赋值给 js.相当相当不标准的写法,当时憋得我实在没招了
    hoythan
        17
    hoythan  
       2015-11-19 13:19:21 +08:00 via iPhone
    @viator42 那是你方法问题。
    des
        18
    des  
       2015-11-19 13:36:13 +08:00
    我是来搞笑的
    !(x^y)
    adexbn
        19
    adexbn  
       2015-11-19 13:46:57 +08:00
    ?1
    sophymax
        20
    sophymax  
       2015-11-19 13:51:40 +08:00
    上学时期写的快速傅里叶变换的程序, 里面的蝶形变换 , 想起来 CPU 的有条汇编指令可以直接进行那个位运算 , 就在 C++里嵌入了一大段汇编
    726332269
        21
    726332269  
       2015-11-19 14:06:00 +08:00 via Android
    ++++++++++[>+++++++>++++++++++>+++>+<<<<-]
    >++.>+.+++++++..+++.>++.<<+++++++++++++++.
    >.+++.------.--------.>+.>.
    abscon
        22
    abscon  
       2015-11-19 17:04:25 +08:00
    #define malloc(size) malloc(size-1)
    ------------------------------------------
    为什么是-1 不是+1
    function007
        23
    function007  
       2015-11-19 17:17:06 +08:00
    一个代码全篇面向过程的安卓程序, 4K+行
    现在完全看不懂当时写的是什么鬼东西
    iannil
        24
    iannil  
       2015-11-19 17:28:24 +08:00
    当年还在写 perl 的时候
    moorlop
        25
    moorlop  
       2015-11-19 20:21:43 +08:00 via iPhone
    print("hello world")之后的代码都难
    XiaoXiaoNiWa
        26
    XiaoXiaoNiWa  
       2015-11-19 21:12:31 +08:00 via Android
    @726332269 brain fuck?
    shiznet
        27
    shiznet  
       2015-11-19 22:21:57 +08:00
    混淆后的代码 类名变量全是 abc
    shiznet
        28
    shiznet  
       2015-11-19 22:22:57 +08:00
    擦 忽略吧 文不对题
    adadada
        29
    adadada  
       2015-11-20 00:32:45 +08:00
    @abscon 恶作剧吧:每次 malloc 都少分配一个 byte ,于是用到边界就出错。
    dtysky
        30
    dtysky  
       2015-11-20 01:24:28 +08:00 via Android
    莫过于菜鸟+硬件
    这是三年前写的

    https://github.com/dtysky/LD3320_FPGA_CONTROLLER/blob/master/VOICE.vhd

    当然啦,这都比不过模电玄学。。。
    726332269
        31
    726332269  
       2015-11-20 01:31:14 +08:00 via Android
    @XiaoXiaoNiWa 是的
    breeswish
        32
    breeswish  
       2015-11-20 08:33:37 +08:00
    (使用旋转矩阵来做旋转的代码简单漂亮
    jukka
        33
    jukka  
    OP
       2015-11-20 09:51:59 +08:00
    @abscon 少分配 1 个字节,大概 90%不会出什么错。 但是是非常隐含的 bug 。 如果是+1 的话, 95%不会出错吧。想制造一个很难复现但是又存在的 bug ,在内存动手脚最 cool 了。啊哈。
    jukka
        34
    jukka  
    OP
       2015-11-20 09:52:26 +08:00
    @breeswish 现在肯定知道旋转矩阵,然而当时还很年轻。
    hxgdzyuyi
        35
    hxgdzyuyi  
       2015-11-20 10:01:32 +08:00
    ++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.


    这个语言叫 Brainfuck ,以上是 hello world https://en.wikipedia.org/wiki/Brainfuck#Hello_World.21
    abscon
        36
    abscon  
       2015-11-20 10:05:42 +08:00
    @adadada
    @jukka

    我是尽量从好的方面来想,没有想到楼主是故意使坏。
    多分配一个字节,正好能拯救那些忘记字符串以零字符结尾因此少分配一个字节的同学们。
    jukka
        37
    jukka  
    OP
       2015-11-20 10:11:27 +08:00
    @abscon 啊哈,就是使坏。

    记得有一个帖子叫, C++程序员离职前。。。。。

    还有这种,哈哈哈。
    #define while if
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2947 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 12:38 · PVG 20:38 · LAX 04:38 · JFK 07:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.