NavisworksTransport/.serena/memories/coding_standards.md

2.0 KiB
Raw Blame History

编码规范和约定

语言和注释

  • 主要语言: 中文用于所有交流和代码注释
  • 注释风格: 详细的中文注释解释功能和目的
  • 文档: 技术文档使用中文

命名约定

  • 类名: PascalCase (如PathPlanningManager)
  • 方法名: PascalCase (如UpdateAnimationUI)
  • 私有字段: _camelCase前缀下划线 (如_animationStatusLabel)
  • 公共属性: PascalCase (如IsAnimationRunning)
  • 常量: UPPER_CASE或PascalCase

线程安全模式(重要)

标准UI更新模式

if (control.InvokeRequired)
{
    control.BeginInvoke(new Action(() =>
    {
        try 
        {
            // UI更新逻辑
            control.Property = newValue;
        }
        catch (Exception ex)
        {
            LogManager.Error($"UI更新失败: {ex.Message}");
        }
    }));
}
else
{
    // 直接执行UI更新逻辑
    control.Property = newValue;
}

批量更新模式ListView等

// 1. 后台准备数据
var items = new List<ListViewItem>();
// ... 准备数据 ...

// 2. 线程安全批量更新
if (listView.InvokeRequired)
{
    listView.BeginInvoke(new Action(() =>
    {
        try
        {
            if (listView != null && !listView.IsDisposed)
            {
                listView.Items.Clear();
                listView.Items.AddRange(items.ToArray());
            }
        }
        catch (Exception ex)
        {
            LogManager.Error($"ListView更新失败: {ex.Message}");
        }
    }));
}

插件注册模式

[Plugin("NavisworksTransport.MainPlugin", "YourDeveloperID")]
[AddInPlugin(AddInLocation.AddIn)]
public class MainPlugin : AddInPlugin { }

异常处理

  • 使用GlobalExceptionHandler进行应用级异常处理
  • 在UI更新中使用try-catch保护
  • 详细的错误日志记录使用LogManager

API使用原则

  • 优先使用: Navisworks Native API (Autodesk.Navisworks.Api)
  • 辅助使用: COM API (Autodesk.Navisworks.ComApi) 用于属性持久化
  • 避免: 直接使用未检查的API调用