我已经进行了不到一年的编程,并且在编写系统应用程序,Web应用程序和用于企业/组织的脚本方面有一些经验。但是,我从未真正完成的一件事是使用Django,Rails或Zend之类的框架。
回顾Django框架,我对框架中提取了多少东西感到沮丧。我了解DRY和最少的代码的核心目标,但是对不同模块的过度依赖以及对核心功能的过度抽象有些感觉是这样的:
由于模块/框架的不断变化的性质,使得程序的过时速度非常快,
由于存在大量可用的框架和模块及其所有特质,使得代码难以理解,
除非您已阅读所有文档,否则使代码的逻辑性降低。也就是说,我可以通读一些列表理解和条件逻辑,弄清楚程序在做什么,但是当您看到需要传入任意字符串和字典的函数时,除非您已经是一位高手,否则事情会变得有些难以理解。给定的模块;和:
使得在框架之间进行切换既困难又乏味。在语言之间进行切换已经是一个挑战,但是如果您对语言的核心功能/理念有足够的了解,这是可以管理的。框架之间的切换似乎更多是死记硬背的问题,从某些方面看,这似乎鼓励了这些框架旨在消除的低效率。
我们真的需要在像MySQL查询这样简单的内容上放置50层抽象吗?为什么不使用类似PHP的PDO接口那样的功能,在该接口中可以处理准备好的语句/输入测试,但是通用的SQL查询仍然是该功能的一部分?
这些抽象真的有用吗?功能膨胀是否会使它们无用,从而使应用程序比没有使用框架编写的类似应用程序更加困难?
Do we really need to put like 50 layers of abstraction on top of something as simple as a MySQL query?
-首先,一个好的框架是一层抽象(内部可能是2层或3层),其次,“就像MySQL查询一样简单”实际上涉及很多抽象。即使从解释语言执行的查询已经到达数据库服务器,您仍然可以通过引擎通过数据库查询到通过物理存储通过文件系统查询的数据库。简而言之:是的,我们需要抽象,因为它们可以防止爆炸。
as a relatively inexperienced programmer
-您制作软件的时间越长,花更少的时间重新发明轮子,而在家中做自己喜欢的事情的时间就越多,您将获得更多的收益。