查看完整版本: [-- Tianchi共享库设计意见征集 --]

QTCN开发网 -> 天池项目 -> Tianchi共享库设计意见征集 [打印本页] 登录 -> 注册 -> 回复主题 -> 发表主题

XChinux 2013-05-07 11:04

Tianchi共享库设计意见征集

Tianchi项目开发中(Tianchi v0.0.1:  http://www.qtcn.org/bbs/read-htm-tid-53763.html),有一些设计方面的问题,需要征集大家的意见,看看采用何种方式,大家将意见写在回帖中,有足够的征集意见后,我们修改Tianchi库,发布v0.0.2

1. 为防止命名冲突,有下面两种方案, 您觉得哪种形式对于库设计来说比较合适?:
    a) 定义Tianchi名字空间,比如::Tianchi::MyClass, 然后typedef ::Tianchi::MyClass TcMyClass,metaObject->className()为 "Tianchi::MyClass"
    b) 定义类前缀,比如::TcMyClass,然后namespace Tianchi { typedef ::TcMyClass  MyClass; }, metaObject->className()为"TcMyClass"

2. 关于文件大小写,下面两种方案,您觉得哪种设计比较合适:
   a) 文件名大小写区分,比如MyClass.h、MyClass.cpp、MyClassPrivate.cpp
   b) 文件名大小写不区分,如要间隔,加下划线,比如myclass.h、myclass.cpp、myclass_p.cpp

3. 是否有必要增加不包含.h的头文件,以表明类名、名字空间名等,比如

MyClass
  1. #include <tianchi/Gui/MyClass.h> // or myclass.h


TcGui
  1. #include <tianchi/Gui/myclass1.h>
    #include <tianchi/Gui/myclass2.h>
    ......
    #include <tianchi/Gui/myclassx.h>


4. 采用下面三种方式来使用Tianchi库,您通常采用何种方式?
   a)动态库
   b)静态库
   c)直接使用源码(需要对Tianchi库结构有所了解)

5. 头文件使用方式,有下面几种,您觉得哪几种比较合适?(多选)
  a) #include <tianchi/MyClass>
  b) #include <tianchi/myclass.h>
  c) #include <tianchi/Gui/MyClass>
  d) #include <tianchi/Gui/myclass.h>
  e) #include <MyClass>
  f) #include <myclass.h>
  g) #include <tianchi/gui/MyClass>
  h) #include <tianchi/gui/myclass.h>

6. 对于Tianchi库中的一些目录,下面几种方案哪种比较合适?(多选)
   a) src/gui/myclass.cpp
   b) src/Gui/myclass.cpp
   c) src/gui/MyClass.cpp
   d) src/Gui/MyClass.cpp
   e) include/tianchi/Gui/myclass.h
    f) include/tianchi/gui/myclass.h
    g) include/tianchi/Gui/MyClass.h
    h) include/tianchi/gui/MyClass.h
    i) include/tianchi/Gui/MyClass
    j) include/tianchi/gui/MyClass




XChinux 2013-05-07 11:11
先说说我的意见:
1.  a, b均可
2. b
3. 可增加
4. b, a
5. a, c
6. a, i

圣域天子 2013-05-07 11:25
个人意见:
   类命名方案:
       类名使用类前缀 TcXXXXX
       不再需要namespace Tianchi { typedef ::TcMyClass  MyClass; }, 的定义,用户需要时可自行定义。

   文件命名方案:
       建议使用 tianchi目录,文件名不使用前缀(Tc)
       倾向于大小写区分
       不增加无 .h 的头文件,以免文件太多
       一个单独功能建议只有一对文件(.h & .cpp),例如 DataAccess 中的两个类,为一个相互依赖的功能,就放在一对文件中

  使用习惯:
      当开发小型工具,仅使用到局部功能时,倾向于静态使用方式或直接使用源码
      开发大型软件,使用到较多tianchi的功能时,倾向于动态使用方式


渡世白玉 2013-05-07 13:23
第一个:用a吧、、
第二个:还是名字不区分大小写的好,下划线挺好的,区分大小写,好像大部分系统审查不是很严格区分大小写。
第三个:加不加h都一样、、、
第四个:优先动态库把、、源码也附上、、、、静态库让自己开发吧、、、静态库对编译器版本太苛刻、、、而且动态库其他语言也能用、、、、
第五个:e,f,g,h
第六个:a,f

XChinux 2013-05-07 14:45
1. 去掉名字空间Tianchi,增加名字空间Tc,
2. 增加类前缀Tc,  这些类不放在任何名字空间里. 不再在Tc名字空间里定义普通类.
3. 所有的enum,都放在类里,或者Tc名字空间里,依用途而定;
4. 具有全局意义的函数,做成类静态方法,或者放在Tc名字空间里(不加Tc前缀)
5. 文件名和目录名都小写, Private类对应的文件名加_p后缀;不生成没有.h的头文件;公共.h文件放在include/tianchi目录及其子目录下
6. 开发Tianchi库时,所有的头文件都采用#include <tianchi/gui/tcxxxx.h>这样的形式
7. 写一个xxx.pri文件,以自动将include/tianchi及其子目录自动添加到INCLUDEPATH中,这样普通用户直接include(xxxx.pri)即可,在开发时,直接#include <xxxx.h>

stlf 2013-05-10 10:24
1. a) b)都需要, 用宏作为开关确定是否使用名字空间
2. b) 全部小写
3. 必要
4. a), b) 静态库, 动态库各有优势,但要针对各平台需编译,节省开发者时间  
5. b), h):  b) #include <tianchi/myclass.h>;  h) #include <tianchi/gui/myclass.h>
6. a), f):  a) src/gui/myclass.cpp; f) include/tianchi/gui/myclass.h

渡世白玉 2013-05-22 15:12
另外提个意见、、、建议源码都保存为utf-8格式、、、
qt-5全线转移到utf-8了,这样的确省了好多问题、、、

XChinux 2013-05-22 21:41
引用第6楼渡世白玉于2013-05-22 15:12发表的  :
另外提个意见、、、建议源码都保存为utf-8格式、、、
qt-5全线转移到utf-8了,这样的确省了好多问题、、、


要兼容msvc 2008、2010、gcc,没办法,只要文件中要用中文(注释)只能用GBK。


查看完整版本: [-- Tianchi共享库设计意见征集 --] [-- top --]



Powered by phpwind v8.7 Code ©2003-2011 phpwind
Gzip disabled