你被外界限制写的最丑的代码是什么?

时间:2009-01-23 12:29:04

标签: coding-style

你写的最丑陋的代码是什么 - 不是因为你不知道更好,而是因为软件,硬件或公司政策的限制?

由于数据库布局和编程语言的不寻常选择,我曾经构建了一个C程序,它读取SQL数据库结构并生成另一个C程序,该程序读取该数据库并将其备份到文件中,或者将其复制到第二个共享或多或少相同列的数据库。这是一个怪物笨重的代码生成器。

6 个答案:

答案 0 :(得分:9)

任何正则表达式。 :)

答案 1 :(得分:6)

在90年代末期,我不得不在Informix Universal Server Web刀片(又名Illustra web刀片)中编写多个网站

对于那些对这个可恶环境一无所知的人,它迫使你使用我遇到过的最离奇的语言。正如Joel Spolsky描述的那样

  

当它运行时,它被证明具有我见过的唯一的编程语言,如果你可以想象的话,它不是图灵等价的。

此处更多信息http://philip.greenspun.com/wtr/illustra-tips.html

一个'简单'if条件的例子:

cond=$(OR,$(NXST,$email),$(NXST,$name),$(NXST,$subject))

它的可怕性质的一个例子是它没有循环这一事实。任何形式的。可以通过创建查询并遍历其行来破解循环功能,但这是错误的,这让我感到恶心。

编辑:我设法找到了完整的代码示例。看哪:

<HTML>
<HEAD><TITLE>WINSTART bug</TITLE></HEAD>
<BODY>
<!--- Initialization --->
<?MIVAR NAME=WINSIZE DEFAULT=4>$WINSIZE<?/MIVAR>
<?MIVAR NAME=BEGIN DEFAULT=1>$START<?/MIVAR>

<!--- Definition of Ranges ---->
<?MIVAR NAME=BEGIN>$(IF,$(<,$BEGIN,1),1,$BEGIN)<?/MIVAR>
<?MIVAR NAME=END>$(+,$BEGIN,$WINSIZE)<?/MIVAR>
<!--- Execution --->
<TABLE BORDER>
<?MISQL WINSTART=$BEGIN WINSIZE=$WINSIZE
    SQL="select tabname from systables where tabname like 'web%' 
        order by tabname;">
    <TR><TD>$1</TD></TR>
<?/MISQL>
</TABLE>
<BR>
<?MIBLOCK COND="$(>,$BEGIN,1)">
    <?MIVAR>
    <A HREF=$WEB_HOME?MIval=WINWALK&START=$(-,$BEGIN,$WINSIZE)&WINSIZE=$WINSIZE>
    Previous $WINSIZE Rows </A> $(IF,$(<,$MI_ROWCOUNT,$WINSIZE), No More Rows,  )
    <?/MIVAR>
<?/MIBLOCK>
<?MIBLOCK COND="$(AND,$(>,$END,$WINSIZE),$(>=,$MI_ROWCOUNT,$WINSIZE))">
    <?MIVAR>
    <A HREF=$WEB_HOME?MIval=WINWALK&START=$END&WINSIZE=$WINSIZE>
    Next $WINSIZE Rows  </A>
    <?/MIVAR>
<?/MIBLOCK>
</BODY>

答案 2 :(得分:2)

曾几何时,我在一家小型编程公司工作,客户有一个他们想要转换为Visual Basic的传统COBOL应用程序。我从来不是VB的粉丝,但这不是一件不合理的事情。

除了他们希望保留接口并使其功能与现有版本完全相同。

因此我们不得不制作一个VB应用程序,该应用程序由一个包含大约100个文本输入框网格的单个表单组成,所有这些都是完全被动的。除了右下角的那个,它有一个数千行的单个事件处理程序,当你退出该字段时处理所有输入框中的所有数据。

答案 3 :(得分:0)

我有自己的骄傲,不写极端丑陋的代码(尽管丑陋的定义随经验而变化)。我的老板付钱给我写代码,他希望它很好。

有时你必须写黑客。但你总是要声称有权在以后解决这些问题,否则你将在以后面对这些问题。

答案 4 :(得分:0)

在两个应用程序之间交换信息的程序。毋庸置疑,两个程序之间的数据采用不同的格式,不同的用例,甚至从一个应用程序到另一个应用程序的含义也不同。有很多特殊情况和“很好”的转换:

if (InputString == "01")) 
         { Output.ClientID = Input.Address;}
else if ((InputString = "02") && (Input.Address == null) &&(Input.ClientID < 1300))
        { Output.ClientID = Input.ClientID +1;}
else if (Input.ClientID = 0 ) 
        { Input.ClientID = 2084; }

然后开启数百行。

这是供大型制造工厂内部使用的......我在大部分时间都在那里工作时哭了。

答案 5 :(得分:0)

我在一家保险管理公司工作。我们在21世纪初期处理在线保险申请,当时在线报价和申请更为罕见。

系统中最丑陋的部分是我们必须将信息发回给承销公司。虽然我们可以收集大量精彩数据,但我们被迫将所有这些数据写入PDF,这是基于有人可以手工填写的物理形式。然后,我们将获取一小部分数据,并将该数据与填写的应用程序一起传输给承销商。应用程序PDF将进入他们的文档成像系统,数据将被放置在他们古老的固定宽度数据库中。就承销商而言,大多数数据仅存在于该PDF上。

我们开玩笑说承销商可能会打印PDF表格,以便将它们扫描到文件成像系统中。如果他们这样做,我不会感到惊讶。