- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 eclipse 中使用 PHP。它工作正常,我可以连接到我的远程站点,有代码元素的颜色编码和一些代码提示。
我意识到这可能太长了,无法回答所有问题,如果您对其中一部分有很好的回答,那么只回答那个就可以了。
首先是通用编码
我发现这很容易包含文件的松散跟踪和他们的变量。例如,如果有一个数据库 $cursor 它是难以记住甚至不知道它被宣布在包括文件(这变得更糟您包含的更多文件)。如何处理这个问题的人?
人们如何记录他们的代码 - 特别是所需的GET 和 POST 数据?
其次OO开发:
我应该在我的系统中完全面向对象吗?发展。目前我有一个我可以的函数库包括并分开每个“任务”到一个单独的文件。它是一个有点讨厌,但它有效。
如果我转向面向对象,我该如何构建PHP 中的目录,java 使用包 - php 呢?
我应该如何命名我的文件?将所有小写字母与 _ 一起用于空格“hello_world.php”?我应该命名吗像 Java 一样大写的类“HelloWorld.php”?有没有不同的命名约定类和常规函数文件?
第三次重构
我必须说这是一个真正的痛苦。如果我更改了变量的名称一个地方我必须经历整个文档和包含的每个文件这个文件并改变他们的名字也。当然,错误无处不在是什么结果。人们怎么样处理这个问题?在 java 如果您在一个地方更改名称它无处不在。
有没有什么插件可以改进php重构?我正在使用Eclipse 官方 PHP 版本来自他们的网站。
谢谢
最佳答案
首先是通用编码
1) OO 可以帮助您。当您封装变量和功能时,它们不会外出并扰乱命名空间。假设我理解你暗示的问题是什么,使用 OO 方法有助于缓解当你无意中重新声明变量时可能出现的冲突。 (注意:缓解。不能完全自行预防。;))否则,我遇到的一种做法是在变量名前加上“包名”之类的东西——这只会将问题上移一个级别,而且也不是很漂亮。 :|
2) “但是适合他们的目的”。 PHPdoc 是一个好的开始;将有助于创建 API 文档。
其次面向对象开发:
3) 如前所述——“视情况而定”。在需要的时候做。您不必为了“hello world”而完全面向对象。但是你可以。权衡任何一条路线的成本和 yield ,然后明智地选择。尽管我个人想在有疑问时建议 OOP 优于“非结构化”方法。基本上,了解您的工具以及何时使用它们——然后您就可以轻松地自行做出决定。 :)
4) 据我所知,目录“的结构类似于包”。请注意,“目录”和“喜欢”。话虽如此,各种框架已经自行解决了这个问题。比照;其他答案。
5) 同样,随心所欲。没有一个明确的方法,你必须这样做或否则。一旦你选择了你的道路就坚持下去;3除此之外,某些框架等有自己的命名约定。例如,Symfony 像 Java 一样使用 CamelCase。
第三次重构
I must say this is a real pain.
是的:3 但它是有返回的。
If I change the name of a variable in one place I have to go through whole document and each file that included this file and change the name their too. Of course, errors everywhere is what results. How are people dealing with this problem? In Java if you change the name in one place it changes everywhere.
不,它没有。如果您获得了支持的工具,您只需使用一次重构工具;但是,如果您在 Java 中重命名一个类属性,则没有神奇的机器人可以通过互联网自动确保地球上的每个人都使用新名称。 ;)
但至于如何预防它——要聪明。遵守程序契约(Contract),即使用接口(interface)。不要使用你不应该直接使用的函数/成员。观察层次结构。使用合理的代码划分并尊重该划分的边界。
但是人们如何处理这个问题呢?好吧,我想搜索并替换 ;)
至于 Eclipse 插件——PHP 的动态特性使得自动重构代码变得更加困难;我们不能总是使用静态类型提示等,而且参数和返回类型的占卜往往是不可能的。因此,据我所知,“自动重构”不像在 Java 世界中那样得到工具的良好支持。尽管我确定可行的情况,但应该有插件。 :)
关于PHP(几个问题)OO,重构,eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3006656/
我相信 OO,但不至于应该使用不适当的设计/实现来实现“OO 兼容”。 那么,如何应对 Serlvet/EJB/DataContainer 分层架构: Servlet 接收请求并调用“业务层”(例如
我有一个员工分为两类(国内和国际)。我还有一个类Refund,是用来给员工退款的。我有一个名为银行账户的类,由 Refund 类用于退款。 现在我的直接设计是这样的: 员工界面,分国内和国际2个子类型
为什么基于类的 OO 而不是基于原型(prototype)的 OO 如此受欢迎?他们在学校教后者吗?尽管 Javascript 是基于原型(prototype)的,但大多数人主要在功能上使用它,或者通
为什么基于类的 OO 而不是基于原型(prototype)的 OO 如此受欢迎?他们在学校教后者吗?尽管 Javascript 是基于原型(prototype)的,但大多数人主要在功能上使用它,或者通
我找不到主要区别。我很困惑什么时候可以使用继承,什么时候可以使用子类型。我找到了一些定义,但它们不是很清楚。 在面向对象编程中,子类型化和继承有什么区别? 最佳答案 除了已经给出的答案,这里还有一个
我想在类中动态定义方法。我正在写一个跟踪器,比下面的框架稍微复杂一些,它也有状态意识,但这与我的问题无关。我写了一个 TraceSlave 类,它带有调用 sprintf 的跟踪方法,用文本\n 替换
如果你看过Going Deep shows of the Channel9最近,一个经常被提及的话题是mathematical duality在编程中。 TomasP 有一个不错的blog post关
关闭。这个问题是opinion-based .它目前不接受答案。 想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它. 关闭 8 年前。 Improve
我是软件设计原则的忠实粉丝,例如 固体 和 干 .面向对象软件设计还有哪些其他原则? 笔记。我不是在寻找诸如“评论您的代码”之类的答案,而是在寻找 OO 设计原则,例如 Uncle Bob 讨论的那些
我找不到主要区别。我很困惑什么时候可以使用继承,什么时候可以使用子类型。我找到了一些定义,但它们不是很清楚。 面向对象编程中的子类型和继承有什么区别? 最佳答案 除了已经给出的答案,这里还有一个 li
这个问题已经有答案了: Javascript: Do I need to put this.var for every variable in an object? (6 个回答) 已关闭 9 年前。
我正在构建一个应用程序,该应用程序在一个对象内有一个对象数组,而它的自身位于一个数组中。我希望能够从子对象访问父对象的属性。我知道我可以简单地通过索引引用父级,如下所示: var parents =
我有一个像这样的html页面 和 2 个像这样的 JavaScript 文件 /// /// /// $(document).ready(fu
我正在尝试用 javascript 做一个巨大的 Web 应用程序,如果我不想搞乱一切,我想我必须以面向对象的方式来做。因此,我进行了很多搜索,发现了很多在 JS 中声明类和创建实例的不同方法,例如环
我在理解 OO 模式如何工作时遇到了一些问题,我的讲师给了我以下问题,但我思考了一整天后无法解决它 我的问题的场景。 有一个名为“ShapeManager”的类,用于管理 Shape 对象。名为“Sh
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 1年前关闭。 Improve this
我正在阅读科学 paper关于 Robert martin 编写的 OO Design Quality Metrics。 在他的论文中,他描述了“一组指标,可用于衡量面向对象设计的质量,根据该设计的子
我有一个与 OOP 相关的问题。我有一个界面,说: class MyInterface { public int getValue(); } 在我的项目中,这个接口(interface)由 7
是否有更好的Pythonic/面向对象方法来选择在运行时执行哪个特定类方法,具体取决于对象的类型,因为使用 type() 方法不被认为优雅(?) 我为我正在使用的三种数据类型编写了以下代码。它基本上将
就 Perl OO 而言,-> 到底做了什么? 例如我打了一个主电话: $result = a::b->mymethod( ); 在我定义 mymethod() 的包中,我使用了以下内容: m
我是一名优秀的程序员,十分优秀!