代码之家  ›  专栏  ›  技术社区  ›  Manos Dilaverakis

在K.I.S.S.和铺砌牛道上[关闭]

  •  13
  • Manos Dilaverakis  · 技术社区  · 16 年前

    我目前正在开发一个PHP应用程序,它使用Access数据库作为后端。不是出于选择,你明白。。。数据库是客户最初使用的,使用它是需求的一部分。

    这个数据库的一个问题是列名具有您可能想象得到的最疯狂的命名约定。大写,小写,下划线,空格和普通的疯狂。例如,“性别”列包含日期。“User2”列也是如此。还有很多,但你明白了。

    面对这种情况,我决定创建一个数组,将数据库列映射到PHP变量,这样我们就可以将代码从疯狂中分离出来。然而,我的同事认为,我把事情复杂化了,我们应该使用数据库的列名来表示相应的PHP变量,这样我们就不需要通过映射数组来查找发生了什么。

    所以我的问题是。。。我是在做正确的事情,还是让事情复杂化?

    14 回复  |  直到 12 年前
        1
  •  22
  •   Ed Guiness    16 年前

    你绝对是在正确的轨道上。如果你不把疯狂抽象出来,你最终会自己屈服于这种疯狂。

    不过,您的同事有一个正确的观点,因此我建议您也编写一个简单的方法,用PHP确定数据到列的映射。

    让我担心的是,这种随机设计往往隐藏着某些商业规则,比如“…如果性别是约会对象,那么他们一定在某个时候购买了一个小部件,因此他们不能被允许对lubdub吹毛求疵…”-我知道这很疯狂,但比应该的更常见。

        2
  •  5
  •   Nerdfest    16 年前

    名字特别重要。如果希望应用程序是可维护的,请在代码库进一步增长之前修复它们。

        3
  •  5
  •   toolkit    16 年前

    我不会说你把事情复杂化了。

    Domain Driven Design 有一个可爱的术语: Anti Corruption Layer

        4
  •  3
  •   ConcernedOfTunbridgeWells    16 年前

    要扮演魔鬼代言人的角色,有一点值得一提,那就是在使用系统的短期内存负载中没有不必要的间接层。一旦熟悉了代码,您就会知道哪个变量中包含了什么,因此主要的好处是让新手从头开始学习代码。然而,正确地解决这个问题还需要修复数据库模式,这将(a)是一项重要的工作,(b)在很大程度上解决这个问题。

    这个问题没有黑白的答案,而你的具体问题也没有一个明确的答案,这表明你可能想让安睡的狗躺着。

        5
  •  2
  •   Loki    16 年前

    只需在最需要的地方创建视图。

        6
  •  1
  •   LenW    16 年前

    逻辑上更易理解和可读的代码。

        7
  •  1
  •   D'Arcy Rittich    16 年前

        8
  •  1
  •   Mendelt    16 年前

    对表名和列名进行硬编码从来都不是一个好主意,即使这些名称有意义。

    我不知道使用数组是否是最好的解决方案。我对PHP不是很熟悉,但我会使用常量字符串之类的东西来存储表名。在我使用的语言中,这将导致更可读的代码。

        9
  •  1
  •   glenatron    16 年前

    你很不幸被这个数据库困住了,但我认为总的来说,把字段名抽象成更合理的东西是更明智的。

    我可能会创建一个数据结构,其中包含数据库名称、净化名称、类型以及从数据库中提取数据时内容的字段。这将提供一种方便的方式来把东西放在一起,这样你就不会 映射出疯狂的名字方案。

        10
  •  1
  •   Mat Nadrofsky    16 年前

    如果有什么不同的话,那么您所做的工作可以提高总体解决方案的灵活性。

        11
  •  1
  •   Stroboskop    16 年前

    在应用程序的末尾使用正确的列名是最好的选择。你应该这样做,除非你想在做了其他事情后再看一遍“这个领域应该是什么?”的时候。

    你同事的观点是不要把事情过分复杂化。这也是正确的。

    因此,将对字段的访问封装在一个或多个方法中,并让该方法进行转换。使用映射这不应该是性能问题。

    真实的 数据库顾客喜欢改变他们的观点。

        12
  •  1
  •   tvanfosson    16 年前

        13
  •  0
  •   user32415    16 年前

    使用ORM,您将很快更改数据库。。。

        14
  •  0
  •   Din    16 年前

    您仍然需要维护数据库。我可以建议的一种可能的方法是按照计划在应用程序代码中映射字段名。但迟早你必须开始用字段名来处理这种命名疯狂,并加以修复。仅仅从一个问题中筛选出来,想象它是一个安全的解决方案和一个很好的方法,这不是一个好主意。这只是暂时的解决办法。不要对这件事满腹牢骚。