• 3D Slicer 风格准则


    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():
    1 if (somethingWrongHappened)
    2    {
    3    qCritical() << "I encountered an error";
    4    return;
    5    }

    对于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():
    1 if (somethingWrongHappened)
    2    {
    3    vtkErrorMacro("I encountered an error");
    4    return;
    5    }

    对于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 文本

    • 首字母大写;
    • 句子压缩,简单明了;
    • 不要使用冒号 ‘:’
    • 使用美式英语,不要使用缩略词
  • 相关阅读:
    nno_setup制作升级包必须面临的几个问题 2
    如何运用inno在安装和卸载时提示用户结束进程?
    inno安装卸载时检测程序是否正在运行卸载完成后自动打开网页-代码无效
    Inno Setup 插件大全
    INNO安装卸载自动结束进程插件使用
    Inno Setup 在安装程序开始前和卸载程序开始前,检查并关闭运行的进程
    INNO:检测程序是否已经安装,是则弹出卸载提示。
    Inno Setup 安装、卸载前检测进程或服务
    断点续传2
    解决 IDEA 创建 Gradle 项目没有src目录问题
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/14235333.html
Copyright © 2020-2023  润新知