Project management 组织代码、分段文件的逻辑布局

Project management 组织代码、分段文件的逻辑布局,project-management,project-planning,code-organization,Project Management,Project Planning,Code Organization,我对编程的了解已经足够让我陷入麻烦大约10年了。我没有受过正规教育,尽管我读过许多关于这一主题的各种语言的书。我现在主要关注的语言是PHP,至少就我现在所做的事情的规模而言 我已经使用了一些OOP类一段时间了,但从未深入了解幕后的原理。我还没有达到我想要的表达水平,但我最近读了这本书,这让我想提高我的编程技能 在新概念的激励下,我开始了一个新项目。我编写了一些可重用的类,这些类处理用户身份验证、用户配置文件、数据库接口以及我在大多数项目中经常使用的一些其他东西 现在,我已经将我典型的乱七八糟的意

我对编程的了解已经足够让我陷入麻烦大约10年了。我没有受过正规教育,尽管我读过许多关于这一主题的各种语言的书。我现在主要关注的语言是PHP,至少就我现在所做的事情的规模而言

我已经使用了一些OOP类一段时间了,但从未深入了解幕后的原理。我还没有达到我想要的表达水平,但我最近读了这本书,这让我想提高我的编程技能

在新概念的激励下,我开始了一个新项目。我编写了一些可重用的类,这些类处理用户身份验证、用户配置文件、数据库接口以及我在大多数项目中经常使用的一些其他东西

现在,我已经将我典型的乱七八糟的意大利面条式代码分解成了一些有组织的文件,在确保文件在需要时都包含在内、如何在逻辑上将脚本划分为类以及如何划分每个类时,我遇到了一些问题

我真正需要的是建议或建议阅读,这些建议或建议不是关注特定的功能和代码格式,而是关注项目的逻辑布局,而不仅仅是一个爱好项目

我想学习如何正确地做事,虽然我还在一些领域学习,但除了创造性和尝试/错误之外,我对这一点一无所知。主要是错误


谢谢你的回复。这个地方很棒

我将尝试在这里表达我以前项目的经验,也许它们对你有帮助

如果您试图对项目进行分段,请尝试查找可能与组件本身一样有用的组件。如果编写例如数据库层,请考虑如何使数据库层独立于应用程序的其他部分(实用程序类和配置除外)。如果您编写了一个访问数据库层的RichClient,请尝试将您需要的内容准确地放入其中,而从Web层访问它时也需要这些内容。现在您有了一个组件,它甚至可能在命令行客户机中有用

或者,如果您想从较低的级别看到这一点,请将您的应用程序拆分为几个小单元,不要让这些单元具有循环依赖关系!!!如果两个组件具有循环依赖关系,则它们不能被拆分,实际上应该是单个组件。我知道,我有几次打破了这个规则,因为你不能一直坚持下去,但这是一个很好的规则来理解你的应用程序的构建块

另一个流行的应用程序划分规则是模型-视图-控制模式MVC,它规定模型、数据类、控制、程序逻辑和图形用户界面视图应拆分为不同的包。当我坚持这一点时,我会像这样划分代码。在每个包中,我都有不同的模型、视图和控制类,但是模型类对控制层一无所知,控制层对GUI也一无所知

由于GUI开发总是乏味的,因此通常是至少在应用程序的单元测试中测试最少的部分,将其从控件中分离使编写业务逻辑变得容易得多。事实上,它让你专注于你必须做的事情,也就是完成工作,用业务逻辑编写代码。如果这部分工作正常,您可以花时间为它编写一个漂亮的GUI。当然,GUI和易用性通常会给控件带来它们自己的需求,但至少是松散耦合的

在我当前的大型项目中,我们有一些bit组件,我们现在将其视为独立的产品,它们被真正的产品使用。这使得负责人更容易测试和编写独立组件,并为每个人提供更稳定的组件


就我的2美分

我将尝试在这里表达我以前项目的经验,也许它们对你有帮助

如果您试图对项目进行分段,请尝试查找可能与组件本身一样有用的组件。如果编写例如数据库层,请考虑如何使数据库层独立于应用程序的其他部分(实用程序类和配置除外)。如果您编写了一个访问数据库层的RichClient,请尝试将您需要的内容准确地放入其中,而从Web层访问它时也需要这些内容。现在您有了一个组件,它甚至可能在命令行客户机中有用

或者,如果您想从较低的级别看到这一点,请将您的应用程序拆分为几个小单元,不要让这些单元具有循环依赖关系!!!如果两个组件具有循环依赖关系,则它们不能被拆分,实际上应该是单个组件。我知道,我有几次打破了这个规则,因为你不能一直坚持下去,但这是一个很好的规则来理解构建块 你的应用程序的第二部分

另一个流行的应用程序划分规则是模型-视图-控制模式MVC,它规定模型、数据类、控制、程序逻辑和图形用户界面视图应拆分为不同的包。当我坚持这一点时,我会像这样划分代码。在每个包中,我都有不同的模型、视图和控制类,但是模型类对控制层一无所知,控制层对GUI也一无所知

由于GUI开发总是乏味的,因此通常是至少在应用程序的单元测试中测试最少的部分,将其从控件中分离使编写业务逻辑变得容易得多。事实上,它让你专注于你必须做的事情,也就是完成工作,用业务逻辑编写代码。如果这部分工作正常,您可以花时间为它编写一个漂亮的GUI。当然,GUI和易用性通常会给控件带来它们自己的需求,但至少是松散耦合的

在我当前的大型项目中,我们有一些bit组件,我们现在将其视为独立的产品,它们被真正的产品使用。这使得负责人更容易测试和编写独立组件,并为每个人提供更稳定的组件


就我的2美分

你的目标很好,我祝你好运——但你的问题相当笼统。组织结构因团队、规模、类型和项目范围而异,因此任何缩小问题范围的方法都会有所帮助。您是否询问在您的开发环境中组织文件,或者在部署的系统中组织文件?您有很好的目标,我祝您好运-但您的问题相当笼统。组织结构因团队、规模、类型和项目范围而异,因此任何缩小问题范围的方法都会有所帮助。您是想在开发环境中组织文件,还是在部署的系统中组织文件?