关于测试代码模块层级和命名的问题

就拿企业微信接口测试框架为例,通讯录(contact)和客户联系(external_contact)都有标签管理这个模块,那我们代码的组织架构:
1)在wechat包下,建立两个包,分别是contact,external_contact,然后再在这两个包下建两个同名的模块tag;(个人认为缺点就是模块同名,容易混淆,优点是层级分明)
2)在wechat包下,建contact_external_tag和contact_tag两个模块(缺点是层级不如上面的分明,如果模块比较多的时候会显得很乱,但模块名不容易混淆)
想问一下,哪种在实际工作中比较可取和常见