✨博客主页 | ||
---|---|---|
何曾参静谧的博客(✅关注、点赞、⭐收藏、转发) | ||
全部专栏(专栏会有变化,以最新发布为准) | ||
「Win」Windows程序设计 | 「IDE」集成开发环境 | 「定制」定制开发集合 |
「C/C++」C/C++程序设计 | 「DSA」数据结构与算法 | 「UG/NX」NX二次开发 |
「QT」QT5程序设计 | 「File」数据文件格式 | 「UG/NX」BlockUI集合 |
「Py」Python程序设计 | 「Math」探秘数学世界 | 「PK」Parasolid函数说明 |
「Web」前后端全栈开发 | 「En」英语从零到一 | 占位符 |
「AI」人工智能大模型 | 「书」书籍阅读笔记 |
在三维CAD/CAM/CAE软件开发中,函数命名使用 ask
还是 get
取决于具体语义和行业惯例。以下是专业建议:
术语 | 典型使用场景 | 示例 | 主流软件参考 |
---|---|---|---|
ask | 需要复杂计算或交互的查询 | askBoundingBox() |
Siemens NX (UG二次开发) |
get | 直接获取已存在的属性或数据 | getTransformMatrix() |
OpenCASCADE, AutoCAD API |
ask
当:// 需要计算包围盒
void askBoundingBox(const TopoDS_Shape& shape, Bnd_Box& box);
ErrorCode askClosestPoint(const gp_Pnt& input, gp_Pnt& result);
get
当:const gp_Trsf& getTransformation() const;
int getFaceCount() const noexcept;
class CADObject {
public:
// 直接获取属性
int getId() const { return m_id; }
// 需要计算的查询
bool askMassProperties(double& mass, gp_XYZ& cog) const {
// 计算质量和重心...
}
};
compute
前缀void computeMeshQuality(MeshQualityReport& report);
is
/has
前缀bool isManifold() const;
ask
void askPrincipalAxes(gp_Ax1& major, gp_Ax1& minor) const;
操作类型 | 推荐命名 | 时间复杂度指示 |
---|---|---|
O(1) 访问 | get | 函数名即提示无计算成本 |
O(n) 及以上 | ask | 提示调用者可能有性能开销 |
// 模糊不清的命名
void box(TopoDS_Shape s, Bnd_Box& b);
// 明确表达意图
void computeBoundingBox(const TopoDS_Shape& shape, Bnd_Box& result);
// 或遵循NX惯例
void askBoundingBox(const TopoDS_Shape& shape, Bnd_Box& result);
getXxx
系列askXxx
系列建议结合您使用的具体三维内核(如OpenCASCADE、Parasolid等)的现有命名惯例。如果是NX二次开发,优先使用 ask
;若是自主开发的几何内核,现代C++更倾向使用 get
。
何曾参静谧的博客(✅关注、点赞、⭐收藏、转发)