标签: package-structuring

在Eclipse中重构"包结构"以将包的子包重定位到其父包

在Eclipse的"Package Explorer"中,假设我有一个这样的包列表:

  • com.animal.dog
  • com.animal.cat
  • com.animal.frog

如果我想重构这个包结构,那么最终的包结构就像

  • com.dog
  • com.cat
  • com.frog

所以基本上删除父包并将子包附加到其祖父母.我在"com.animal"包中有很多子包,我想尽可能避免手动执行此操作,然后在各处更改包导入.

java eclipse refactoring packages package-structuring

23
推荐指数
2
解决办法
1万
查看次数

如何使用标准库包名解析Python包中的命名空间冲突?

我正在开发一个在磁盘上具有以下结构的包:

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,但绝对是独一无二的),这应该不够吗?

python namespaces packages package-structuring

16
推荐指数
1
解决办法
1万
查看次数

您是否将单元测试与集成测试分开?

我只是想知道是否有人只是将集成测试视为一个特殊的单元测试.但是,我从其他程序员那里听说,将单元测试和集成测试分开是一个好主意.我想知道是否有人可以解释为什么这是一个好主意.将集成和单元测试视为完全不同,有哪些优势?例如,我已经看到了用于集成测试和单元测试的单独文件夹和包.我认为包含单元测试和集成测试的单个测试包就足够了,因为它们基本上是相同的概念.

integration-testing unit-testing package-structuring

10
推荐指数
2
解决办法
1674
查看次数

使用子/子包构建包结构

我想在Go中制作一个简单的计算器.我正在设计它,我可以先构建一个命令行界面,然后在GUI界面中轻松交换.项目位置是$GOPATH/src/gocalc(此后的所有路径都相对于项目位置).命令行界面逻辑存储在文件中gocalc.go.计算器逻辑存储在文件中calcfns/calcfns.gooperations/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 main
      • import "gocalc/calcfns"
    • calcfns/
      • calcfns.go
        • package calcfns
        • import "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 …

go package-structuring

6
推荐指数
1
解决办法
6262
查看次数

在哪个命名空间/包中放置异常

构建异常类位置的常见或最佳实践是什么?

假设您有包/名称空间myproject.person(人员的模型和DAO)和myproject.order(订单的模型和DAO)以及例外PersonExceptionOrderException.我应该将异常放在相应的包中还是在单独的包中用于例外(例如myproject.exceptions)?

第一种方法似乎更合理(因为它按功能排序).但是问题出在哪里你应该放置与两者相关的例外?例如ConstraintViolationException

谢谢

c# java exception package-structuring namespace-organisation

5
推荐指数
3
解决办法
2171
查看次数