在Eclipse的"Package Explorer"中,假设我有一个这样的包列表:
如果我想重构这个包结构,那么最终的包结构就像
所以基本上删除父包并将子包附加到其祖父母.我在"com.animal"包中有很多子包,我想尽可能避免手动执行此操作,然后在各处更改包导入.
我正在开发一个在磁盘上具有以下结构的包:
foo/
__init__.py
xml.py
bar.py
moo.py
Run Code Online (Sandbox Code Playgroud)
该xml.py包提供了一个类,该类使用SAX流解析器为其他包组件执行一些自定义XML解析和转换.所以它有:
import xml.sax
import xml.sax.handler
Run Code Online (Sandbox Code Playgroud)
但是当我foo.xml在应用程序中使用时,我得到:
Traceback (most recent call last):
File "testxmlparser.py", line 15, in <module>
import foo.xml
File "~/code/foo/xml.py", line 39, in <module>
import xml.sax
ImportError: No module named sax
Run Code Online (Sandbox Code Playgroud)
我似乎有一个命名空间冲突.如果我重命名xml.py为其他东西,就像xmlparser.py一切按预期工作.但这感觉是错误的做法.我觉得我在这里缺少Python中包名和解析的基本内容.
有没有一种正确的方法来完成这项工作,而不涉及我重命名foo/xml.py文件?或者这真的是冲突名称的唯一解决方案吗?
编辑:"避免命名与标准Python模块相同的东西"似乎......好吧..给我一个mineshaft.这是一个移动目标,标准模块集,随着时间的推移必然会发生变化和增长.因此,除非你真正对自己的名字有所了解,否则重命名 - 事物 - 直到找到 - 某些不冲突的解决方案对我来说似乎很不好.此外,我已经用一个独特的包装名称foo(我不使用foo,但绝对是独一无二的),这应该不够吗?
我只是想知道是否有人只是将集成测试视为一个特殊的单元测试.但是,我从其他程序员那里听说,将单元测试和集成测试分开是一个好主意.我想知道是否有人可以解释为什么这是一个好主意.将集成和单元测试视为完全不同,有哪些优势?例如,我已经看到了用于集成测试和单元测试的单独文件夹和包.我认为包含单元测试和集成测试的单个测试包就足够了,因为它们基本上是相同的概念.
我想在Go中制作一个简单的计算器.我正在设计它,我可以先构建一个命令行界面,然后在GUI界面中轻松交换.项目位置是$GOPATH/src/gocalc(此后的所有路径都相对于项目位置).命令行界面逻辑存储在文件中gocalc.go.计算器逻辑存储在文件中calcfns/calcfns.go和operations/operations.go.所有文件都只是主程序,等同于它们的文件名(没有扩展名)包名gocalc.go,这是在package main
calcfns.go进口operations.go通过import "gocalc/operations"; 通过gocalc.go进口calcfns.goimport "gocalc/calcfns"
总结一下:
$GOPATH/src/gocalc/
gocalc.go
package mainimport "gocalc/calcfns"calcfns/
calcfns.go
package calcfnsimport "gocalc/operations"operations/
operations.go
package operations当我尝试go build operations(从项目目录),我得到回应:can't load package: package operations: import "operations": cannot find package
当我尝试go build gocalc/operations,我得到can't load package: package gocalc/operations: import "gocalc/operations": cannot find package
当我尝试go build operations/operations.go,它编译好
当我尝试go …
构建异常类位置的常见或最佳实践是什么?
假设您有包/名称空间myproject.person(人员的模型和DAO)和myproject.order(订单的模型和DAO)以及例外PersonException和OrderException.我应该将异常放在相应的包中还是在单独的包中用于例外(例如myproject.exceptions)?
第一种方法似乎更合理(因为它按功能排序).但是问题出在哪里你应该放置与两者相关的例外?例如ConstraintViolationException
谢谢
c# java exception package-structuring namespace-organisation
java ×2
packages ×2
c# ×1
eclipse ×1
exception ×1
go ×1
namespaces ×1
python ×1
refactoring ×1
unit-testing ×1