1.代码风格

从VTK继承的类要保持VTK传统命名规则。VTK的代码设计标准参考如下:
http://www.vtk.org/Wiki/VTK_Coding_Standards

1.1 命名风格

  • 缩写词应该用同样大小的字母表示(全大写/全小写)
RASToSlicer RasToSlicer;vtkMRML vtkMrml;vtkSlicer vTKSlicer
  • 单词应该全拼而不是缩写
GetWindow GetWin

  • 文件名鼻血采用‘驼峰’惯例
TestMyFeature.c Test_My_Feature.c

  • 使用美式英语单词
Millimeter Millimetre;Color  Colour;

1.2 注释风格

  • 头文件中注释全面的注释信息;
  • 当代码发生改变时应该及时进行标注;
  • 需要重新考虑的代码,应该用关键词‘todo’进行标记;
  • 在源代码文件中尽量不要使用注释快

1.3 功能风格

  • 不要混淆不同层次的抽象
例如,当我们处理文件名和文件路径的时候,应该使用VTK类中的kwsys::SystemTool、Qt类中的QFileInfo/QDir、或者Python中的os.path。而不是人工进行字符串操作:

QString filePath = directoryPath + ''/'' + fileName + ''.exe'';
应该采用:
SystemTools::JoinPath();SystemTools::GetFilenameName();
QFileInfo(QDir directorty, QString fileName);QFileInfo::suffix();QFileInfo::absoluteFilePath();
os.path.join();os.path.splitext();os.path.abspath();
  • 尽量使用标准模板库,但是要遵循VTK指南
VTK中如何使用标准模板库,可以参考如下网址:

http://www.vtk.org/Wiki/VTK_FAQ#Can_I_use_STL_with_VTK.3F
注意:
1.在Qt文件中,更提倡应用Qt容器类而不是标准模板库;
2.vtkCollection和std::list<vtkSmartPointer<vtkObject*>>具有相同的功能。

1.4 语言风格

C++、Python、CMake

1.5 库依赖风格

  • MRML类只依赖vtk和itk(并不依赖Slicer logic和Qt哦)
  • 逻辑类Logic依赖MRML存储状态
  • 逻辑类Logic能够封装vtk/itk,实现特定的Slicer任务(例如对体数据重采样后显示)
  • GUI类依赖MRML、Logic、Qt

1.6 坐标系风格

  • 3D世界空间坐标系采用RAS空间坐标系。世界坐标系、解剖坐标系、图像坐标系如下图:

  • 所有的单位都是毫米millimeter

1.7 错误与警告风格

itk/vtk/qt、std::cout、std::cerr......错误日志里面所有的错误都可以根据他们的类型(debug/warning/error),利用文件过滤器找到。
  • Qt:qCritical()、qWarning()、qDebug()
对于Error信息使用qCritical():

 if (somethingWrongHappened){qCritical() << "I encountered an error";return;}

对于Warning信息使用qWarning():

 qWarning() << "Be careful here, this is dangerous";

对于Debug信息使用qDebug():

qDebug() << "This variable has the value: "<< value;
  • VTK-based:vtkErrorMacro()、vtkWarningMacro()、vtkDebugMacro()
对于Error信息使用vtkErrorMacro():
if (somethingWrongHappened){vtkErrorMacro("I encountered an error");return;}

对于Warning信息使用vtkWarningMacro():

vtkWarningMacro("Be careful here, this is dangerous");

对于Debug信息使用vtkDebugMacro():

vtkDebugMacro("This variable has the value: "<< value);

2.UI设计准则

2.1 一般准则

  • 微软用户交互文本准则:https://msdn.microsoft.com/en-us/library/windows/desktop/dn742478.aspx
  • 微软窗体风格和色调指南:https://msdn.microsoft.com/en-us/library/windows/desktop/dn742477.aspx

2.2 面板

  • Section:
Section用来对参数进行分类。上图是‘Rendering module’,包含三个sections,‘Input’、‘Display’、‘Advanced...’
默认的情况下,‘Input’和‘Advanced...’都是折叠的。
  • Parameter:

对齐,空间利用合理即可。

2.3 文本

  • 首字母大写;
  • 句子压缩,简单明了;
  • 不要使用冒号 ‘:’
  • 使用美式英语,不要使用缩略词

3DSlicer12:风格准则相关推荐

  1. 来自 Google 的 R 语言编码风格指南

    来自 Google 的 R 语言编码风格指南 R 语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google ...

  2. python代码风格_Python编码风格,看这篇就够了

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是 Python 这门语言设计的核心.一个不 ...

  3. 数据简化社区Google和Linux代码风格指南(附PDF公号发“代码风格”下载)

    数据简化社区Google和Linux代码风格指南(附PDF公号发"代码风格"下载) 秦陇纪2019代码类 数据简化DataSimp 昨天 数据简化DataSimp导读:数据简化社区 ...

  4. Google C++ Style Guide - Google C++ 风格指南

    Google C++ Style Guide - Google C++ 风格指南 Every major open-source project has its own style guide: a ...

  5. 教你写出可读性高的Python代码

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是这门语言设计的核心.一个不争的事实是,相对 ...

  6. 培训师 每小时多少钱_每个产品设计师需要了解的品牌知识

    培训师 每小时多少钱 重点 (Top highlight) These days, it pays to know about brand. The rise of startups has crea ...

  7. vb net 模拟 ctrl+c_8款优秀的.NET开发工具,收藏了

    NET是一个重要的应用程序开发平台,因为它安全.稳定.易于学习和实现.今天小编给就给大家介绍8款优秀的.NET开发工具,有需要的小伙伴可以收藏转发哦. 1.Chocolaty Chocolaty是一个 ...

  8. 静态代码分析工具列表分析---代码分析工具列表(30款工具)

    本文是一个静态代码分析工具的清单,共有30个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

  9. 静态代码分析工具清单:开源篇(各语言)

    本文是一个静态代码分析工具的清单,共有26个工具.包括4个.NET工具.2个Ada工具.7个C++工具.4个Java工具.2个JavaScript工具.1个Opa工具.2个Packaging工具.3个 ...

最新文章

  1. ios软件商店上架老被打回_安卓神级特殊站点+苹果下载神器上架
  2. matlab入门笔记3
  3. 无法激活“Pylance“扩展, 因为它依赖于未加载的 Python 扩展。解决办法
  4. 原生JS操作DOM节点代码
  5. SQL Server 字符串操作
  6. 5分钟了解vue-router的基本使用
  7. 深入理解JVM(5)——虚拟机类加载机制
  8. 160个Crackme040
  9. mysql cookbook
  10. 汉诺塔问题 hdu 2064 hdu1997
  11. iOS自动布局之autoresizingi
  12. 内存不稳定导致的故障
  13. windows操作系统原理_操作系统 — 深入理解内存的原理
  14. Cocos2d-x中的BMFont(Fnt)字体改名
  15. Java调用so文件
  16. 【服务器数据恢复】服务器Raid5阵列mdisk磁盘离线的数据恢复案例
  17. 我的缅甸往事(二) | 惊魂南塘河
  18. 修复YYC松鼠短视频系统我的收藏页面 没有返回按钮的bug
  19. 网球爱好者小程序的设计与实现
  20. linux中python怎么退出_linux 怎么退出python

热门文章

  1. ASA IPSEC ***配置
  2. red hat 5 和 oracle
  3. NYOJ 620 真实的谎言
  4. Golang之funcval结构体
  5. java Web发布的两种方式
  6. MVC5 + EF6 入门完整教程
  7. iOS-iOS9系统SEGV_ACCERR问题处理【v3.6.3的一些bug修复】
  8. 将Jquery序列化后的表单值转换成Json
  9. ARM7/9 的中断与 RTOS 系统(转)
  10. C#扩展方法应用之 try catch finally 封装