Skip to content

Commit 26d84cb

Browse files
committed
chore: naming improvements and use appropriate variables
1 parent 1426733 commit 26d84cb

14 files changed

+377
-68
lines changed

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,16 @@ auto state_arc = hand.getStateArc();
247247
- 使用示例和注意事项
248248
- 版本兼容性说明
249249
250+
### 命名规范
251+
252+
项目已进行命名规范改进,详细信息请参考:[命名规范改进文档](docs/NAMING_IMPROVEMENTS.md)
253+
254+
主要改进包括:
255+
- 统一命名空间结构(所有型号实现类迁移到 `linkerhand::hand` 命名空间)
256+
- 类名改进(不同型号使用不同类名,如 `L10Hand`, `L20Hand` 等)
257+
- 参数命名修正(`handJoint` → `handModel`)
258+
- 完全向后兼容(旧命名仍可使用)
259+
250260
## 🧪 测试
251261
252262
### 运行测试

docs/API-Reference.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,14 +55,14 @@ LinkerHand C++ API 提供了完整的接口用于控制灵心巧手系列灵巧
5555
### LinkerHandApi
5656

5757
```cpp
58-
LinkerHandApi(const LINKER_HAND &handJoint, const HAND_TYPE &handType, const COMM_TYPE commType = COMM_CAN_0);
58+
LinkerHandApi(const LINKER_HAND &handModel, const HAND_TYPE &handType, const COMM_TYPE commType = COMM_CAN_0);
5959
```
6060
6161
**功能描述**
6262
创建并初始化 LinkerHand API 实例。
6363
6464
**参数说明**
65-
- `handJoint` (LINKER_HAND): 机械手型号
65+
- `handModel` (LINKER_HAND): 机械手型号
6666
- 可选值: `LINKER_HAND::O6`, `LINKER_HAND::L6`, `LINKER_HAND::L7`, `LINKER_HAND::L10`, `LINKER_HAND::L20`, `LINKER_HAND::L21`, `LINKER_HAND::L25`
6767
- `handType` (HAND_TYPE): 机械手类型
6868
- `HAND_TYPE::LEFT` - 左手
@@ -623,7 +623,7 @@ void setCurrent(const std::vector<uint8_t> &current);
623623
**使用示例**
624624
```cpp
625625
// 仅 L20 支持
626-
if (hand.handJoint_ == LINKER_HAND::L20) {
626+
if (hand.handModel_ == LINKER_HAND::L20) {
627627
std::vector<uint8_t> current = {100, 100, 100, 100, 100};
628628
hand.setCurrent(current);
629629
}
@@ -655,7 +655,7 @@ void setEnable(const std::vector<uint8_t> &enable = std::vector<uint8_t>(5, 0));
655655
**使用示例**
656656
```cpp
657657
// 仅 L25 支持
658-
if (hand.handJoint_ == LINKER_HAND::L25) {
658+
if (hand.handModel_ == LINKER_HAND::L25) {
659659
std::vector<uint8_t> enable = {1, 1, 1, 1, 1}; // 使能所有手指
660660
hand.setEnable(enable);
661661
}
@@ -687,7 +687,7 @@ void setDisable(const std::vector<uint8_t> &disable = std::vector<uint8_t>(5, 1)
687687
**使用示例**
688688
```cpp
689689
// 仅 L25 支持
690-
if (hand.handJoint_ == LINKER_HAND::L25) {
690+
if (hand.handModel_ == LINKER_HAND::L25) {
691691
std::vector<uint8_t> disable = {1, 1, 1, 1, 1}; // 禁用所有手指
692692
hand.setDisable(disable);
693693
}
@@ -718,7 +718,7 @@ void clearFaultCode(const std::vector<uint8_t> &torque = std::vector<uint8_t>(5,
718718
**使用示例**
719719
```cpp
720720
// 仅 L20 支持
721-
if (hand.handJoint_ == LINKER_HAND::L20) {
721+
if (hand.handModel_ == LINKER_HAND::L20) {
722722
hand.clearFaultCode();
723723
}
724724
```

docs/NAMING_IMPROVEMENTS.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,166 @@
1+
# LinkerHand C++ SDK 命名规范改进指南
2+
3+
## 概述
4+
5+
本文档描述了 LinkerHand C++ SDK 的命名规范改进,这些改进旨在提高代码一致性、可维护性和可读性。
6+
7+
## 改进内容
8+
9+
### 1. 统一命名空间结构
10+
11+
所有手型号实现类已迁移到统一的 `linkerhand::hand` 命名空间:
12+
13+
**改进前:**
14+
```cpp
15+
namespace LinkerHandL10 {
16+
class LinkerHand : public linkerhand::hand::IHand { ... };
17+
}
18+
```
19+
20+
**改进后:**
21+
```cpp
22+
namespace linkerhand {
23+
namespace hand {
24+
class L10Hand : public IHand { ... };
25+
} // namespace hand
26+
} // namespace linkerhand
27+
```
28+
29+
### 2. 类名改进
30+
31+
不同型号的手现在使用不同的类名,便于区分:
32+
33+
| 型号 | 旧类名 | 新类名 | 命名空间 |
34+
|------|--------|--------|---------|
35+
| L6/O6 | `LinkerHandL6::LinkerHand` | `linkerhand::hand::L6Hand` | `linkerhand::hand` |
36+
| L7 | `LinkerHandL7::LinkerHand` | `linkerhand::hand::L7Hand` | `linkerhand::hand` |
37+
| L10 | `LinkerHandL10::LinkerHand` | `linkerhand::hand::L10Hand` | `linkerhand::hand` |
38+
| L20 | `LinkerHandL20::LinkerHand` | `linkerhand::hand::L20Hand` | `linkerhand::hand` |
39+
| L25/L21 | `LinkerHandL25::LinkerHand` | `linkerhand::hand::L25Hand` | `linkerhand::hand` |
40+
| Modbus L10 | `ModbusLinkerHandL10::LinkerHand` | `linkerhand::hand::ModbusL10Hand` | `linkerhand::hand` |
41+
42+
### 3. 帧属性枚举重命名
43+
44+
各型号的帧属性枚举已重命名,使用更清晰的命名:
45+
46+
| 型号 | 旧枚举名 | 新枚举名 |
47+
|------|---------|---------|
48+
| L6/O6 | `LinkerHandL6::FRAME_PROPERTY` | `linkerhand::hand::L6FrameProperty` |
49+
| L7 | `LinkerHandL7::FRAME_PROPERTY` | `linkerhand::hand::L7FrameProperty` |
50+
| L10 | `LinkerHandL10::FRAME_PROPERTY` | `linkerhand::hand::L10FrameProperty` |
51+
| L20 | `LinkerHandL20::FRAME_PROPERTY` | `linkerhand::hand::L20FrameProperty` |
52+
| L25/L21 | `LinkerHandL25::FRAME_PROPERTY` | `linkerhand::hand::L25FrameProperty` |
53+
54+
### 4. 参数命名修正
55+
56+
修正了错误的参数命名:
57+
58+
**改进前(错误)**
59+
```cpp
60+
LinkerHandApi(const LINKER_HAND &handJoint, ...);
61+
LINKER_HAND handJoint_; // 这是手型号,不是关节
62+
```
63+
64+
**改进后(正确)**:
65+
```cpp
66+
LinkerHandApi(const LINKER_HAND &handModel, ...);
67+
LINKER_HAND handModel_; // 手型号(L6, L7, L10, L20, L21, L25 等)
68+
```
69+
70+
**说明**
71+
- `handJoint` 命名不准确,因为这是手型号(Model),不是关节(Joint)
72+
- 已统一修正为 `handModel`,更准确地表示手型号
73+
74+
## 向后兼容性
75+
76+
为了保持向后兼容,所有旧的命名空间和类名都通过 `using` 别名保留:
77+
78+
```cpp
79+
// 向后兼容:在旧命名空间中提供别名
80+
namespace LinkerHandL10 {
81+
using FRAME_PROPERTY = linkerhand::hand::L10FrameProperty;
82+
using LinkerHand = linkerhand::hand::L10Hand;
83+
} // namespace LinkerHandL10
84+
```
85+
86+
这意味着现有代码可以继续使用旧的命名,无需立即修改。
87+
88+
## 使用示例
89+
90+
### 使用新命名(推荐)
91+
92+
```cpp
93+
#include "LinkerHandL10.h"
94+
#include "HandFactory.h"
95+
96+
// 使用新的命名空间和类名
97+
using namespace linkerhand;
98+
99+
auto hand = factory::HandFactory::createHand(
100+
LINKER_HAND::L10,
101+
HAND_TYPE::RIGHT,
102+
COMM_CAN_0
103+
);
104+
// hand 的类型是 std::unique_ptr<hand::IHand>
105+
// 实际类型是 hand::L10Hand
106+
```
107+
108+
### 使用旧命名(向后兼容)
109+
110+
```cpp
111+
#include "LinkerHandL10.h"
112+
#include "HandFactory.h"
113+
114+
// 仍然可以使用旧的命名空间
115+
LinkerHandL10::LinkerHand hand(0x27, "can0", 1000000);
116+
```
117+
118+
## 迁移建议
119+
120+
### 阶段一:保持兼容(当前)
121+
122+
- ✅ 所有新命名已实现
123+
- ✅ 向后兼容别名已添加
124+
- ✅ 现有代码无需修改即可继续工作
125+
126+
### 阶段二:逐步迁移(推荐)
127+
128+
1. **新代码使用新命名**:所有新编写的代码应使用新的命名空间和类名
129+
2. **更新文档和示例**:逐步更新文档和示例代码使用新命名
130+
3. **代码审查**:在代码审查中鼓励使用新命名
131+
132+
### 阶段三:完全迁移(未来)
133+
134+
在未来版本中,可以考虑:
135+
- 移除向后兼容别名(需要主版本号升级)
136+
- 更新所有内部代码使用新命名
137+
- 更新所有文档和示例
138+
139+
## 优势
140+
141+
1. **一致性**:所有型号使用统一的命名空间结构
142+
2. **可读性**:类名直接反映型号(`L10Hand` vs `LinkerHand`)
143+
3. **可维护性**:统一的命名空间便于管理和查找
144+
4. **扩展性**:新型号可以轻松添加到同一命名空间
145+
146+
## 注意事项
147+
148+
1. **工厂类**:`HandFactory` 已更新为使用新类名,但返回类型仍然是 `IHand` 接口
149+
2. **头文件**:头文件名暂时保持不变,未来可以考虑重命名
150+
3. **枚举**:帧属性枚举已重命名,但枚举值保持不变
151+
152+
## 相关文件
153+
154+
- `include/LinkerHandL6.h` - L6/O6 型号实现
155+
- `include/LinkerHandL7.h` - L7 型号实现
156+
- `include/LinkerHandL10.h` - L10 型号实现
157+
- `include/LinkerHandL20.h` - L20 型号实现
158+
- `include/LinkerHandL25.h` - L25/L21 型号实现
159+
- `include/ModbusLinkerHandL10.h` - Modbus L10 型号实现
160+
- `include/HandFactory.h` - 工厂类
161+
162+
## 版本信息
163+
164+
- **改进版本**:1.1.7+
165+
- **兼容性**:完全向后兼容
166+

docs/TROUBLESHOOTING.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -398,7 +398,7 @@ CMake 3.5 or higher is required
398398
```cpp
399399
std::vector<uint8_t> pose;
400400

401-
switch (hand.handJoint_) {
401+
switch (hand.handModel_) {
402402
case LINKER_HAND::L6:
403403
case LINKER_HAND::O6:
404404
pose.resize(6);
@@ -423,7 +423,7 @@ CMake 3.5 or higher is required
423423
```cpp
424424
void safeFingerMove(LinkerHandApi& hand, const std::vector<uint8_t>& pose) {
425425
int expected_size = 0;
426-
switch (hand.handJoint_) {
426+
switch (hand.handModel_) {
427427
case LINKER_HAND::L10: expected_size = 10; break;
428428
case LINKER_HAND::L20: expected_size = 20; break;
429429
// ...
@@ -451,7 +451,7 @@ CMake 3.5 or higher is required
451451
1. **检查型号支持**:
452452
```cpp
453453
// 仅 L20 支持 setCurrent
454-
if (hand.handJoint_ == LINKER_HAND::L20) {
454+
if (hand.handModel_ == LINKER_HAND::L20) {
455455
hand.setCurrent(current);
456456
} else {
457457
std::cerr << "警告: setCurrent 仅支持 L20" << std::endl;

examples/toolset_example.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -281,7 +281,7 @@ void interactiveMode(LinkerHandApi &hand)
281281
}
282282
break;
283283
case 11:
284-
if (hand.handJoint_ == LINKER_HAND::L6) {
284+
if (hand.handModel_ == LINKER_HAND::L6) {
285285
std::cout << "L6 - Execute action" << std::endl;
286286

287287
for (size_t i = 0; i < 10; i++) {
@@ -293,7 +293,7 @@ void interactiveMode(LinkerHandApi &hand)
293293
}
294294

295295

296-
} else if (hand.handJoint_ == LINKER_HAND::L7) {
296+
} else if (hand.handModel_ == LINKER_HAND::L7) {
297297
hand.setSpeed(std::vector<uint8_t>(7, HAND_SPEED)); // L7 need 7 speed
298298
hand.setTorque(std::vector<uint8_t>(7, HAND_TORQUE)); // L7 need 7 torque
299299
//---------------------------------------------------------
@@ -309,7 +309,7 @@ void interactiveMode(LinkerHandApi &hand)
309309
std::this_thread::sleep_for(std::chrono::seconds(1));
310310
//---------------------------------------------------------
311311
}
312-
else if (hand.handJoint_ == LINKER_HAND::L10)
312+
else if (hand.handModel_ == LINKER_HAND::L10)
313313
{
314314
hand.setSpeed(std::vector<uint8_t>(5, HAND_SPEED)); // L10 need 5 speed
315315
hand.setTorque(std::vector<uint8_t>(5, HAND_TORQUE)); // L10 need 5 torque
@@ -344,7 +344,7 @@ void interactiveMode(LinkerHandApi &hand)
344344
std::this_thread::sleep_for(std::chrono::seconds(1));
345345
//---------------------------------------------------------
346346
}
347-
else if (hand.handJoint_ == LINKER_HAND::L20)
347+
else if (hand.handModel_ == LINKER_HAND::L20)
348348
{
349349
hand.setSpeed(std::vector<uint8_t>(5, HAND_SPEED)); // L20 need 5 speed
350350
//---------------------------------------------------------
@@ -358,7 +358,7 @@ void interactiveMode(LinkerHandApi &hand)
358358
hand.fingerMove(L20_POSE_OPEN);
359359
std::this_thread::sleep_for(std::chrono::seconds(1));
360360
}
361-
else if (hand.handJoint_ == LINKER_HAND::L25 || hand.handJoint_ == LINKER_HAND::L21)
361+
else if (hand.handModel_ == LINKER_HAND::L25 || hand.handModel_ == LINKER_HAND::L21)
362362
{
363363
hand.setSpeed(std::vector<uint8_t>(25, HAND_SPEED));
364364
hand.setTorque(std::vector<uint8_t>(25, HAND_TORQUE));

include/HandFactory.h

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -61,25 +61,25 @@ class HandFactory {
6161
if (canChannel == "can0" || canChannel == "can1" || canChannel == "ethercat") {
6262
switch (type) {
6363
case O6:
64-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL6::LinkerHand>(handId, canChannel, baudrate));
64+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L6Hand>(handId, canChannel, baudrate));
6565
break;
6666
case L6:
67-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL6::LinkerHand>(handId, canChannel, baudrate));
67+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L6Hand>(handId, canChannel, baudrate));
6868
break;
6969
case L7:
70-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL7::LinkerHand>(handId, canChannel, baudrate));
70+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L7Hand>(handId, canChannel, baudrate));
7171
break;
7272
case L10:
73-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL10::LinkerHand>(handId, canChannel, baudrate));
73+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L10Hand>(handId, canChannel, baudrate));
7474
break;
7575
case L20:
76-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL20::LinkerHand>(handId, canChannel, baudrate));
76+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L20Hand>(handId, canChannel, baudrate));
7777
break;
7878
case L21:
79-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL25::LinkerHand>(handId, canChannel, baudrate, 1));
79+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L25Hand>(handId, canChannel, baudrate, 1));
8080
break;
8181
case L25:
82-
return std::unique_ptr<hand::IHand>(std::make_unique<LinkerHandL25::LinkerHand>(handId, canChannel, baudrate, 0));
82+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::L25Hand>(handId, canChannel, baudrate, 0));
8383
break;
8484
default:
8585
throw std::invalid_argument("Unknown hand type");
@@ -88,7 +88,7 @@ class HandFactory {
8888
#if USE_RMAN
8989
switch (type) {
9090
case L10:
91-
return std::unique_ptr<hand::IHand>(std::make_unique<ModbusLinkerHandL10::LinkerHand>(handId));
91+
return std::unique_ptr<hand::IHand>(std::make_unique<hand::ModbusL10Hand>(handId));
9292
default:
9393
throw std::invalid_argument("Unknown hand type");
9494
break;

include/LinkerHandApi.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@ class LinkerHandApi
2121
public:
2222
/**
2323
* @brief 构造函数
24-
* @param handJoint 手型号(LINKER_HAND 枚举)
24+
* @param handModel 手型号(LINKER_HAND 枚举)
2525
* @param handType 手类型(左手/右手)
2626
* @param commType 通信类型(默认 CAN_0)
2727
*/
28-
LinkerHandApi(const LINKER_HAND &handJoint, const HAND_TYPE &handType,
28+
LinkerHandApi(const LINKER_HAND &handModel, const HAND_TYPE &handType,
2929
const COMM_TYPE commType = COMM_CAN_0);
3030
~LinkerHandApi();
3131

@@ -80,7 +80,7 @@ class LinkerHandApi
8080
std::unique_ptr<linkerhand::hand::IHand> hand;
8181
uint32_t handId;
8282
public:
83-
LINKER_HAND handJoint_;
83+
LINKER_HAND handModel_; // 手型号(L6, L7, L10, L20, L21, L25 等)
8484
HAND_TYPE handType_;
8585
};
8686

0 commit comments

Comments
 (0)