如何按照 Objective C 中的 SOLID 原则向现有方法添加另一个参数
How to add another parameter to an existing method following SOLID principle in Objective C
我有一个方法
-(NSData*)getCommonDataWithCommandID:(int)commandID withChannelNumber:(int)channelNo withDataArray:(NSArray*)dataArray withByteArraySize:(int)byteArraySize
{
}
这是从很多地方调用的,调用层次很大。如何从 dimSliderDecreasedTapped:
或 tapOnFifthChannel:
传递值这只是一部分!
现在我需要给这个方法添加另一个参数
bool isFeedbackExpected
但这会变成紫色 Open Closed Principle。
最好的方法是什么?
使用该参数添加另一个方法:
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize
feedbackExpected:(BOOL)feedbackExpected {
...
}
并从您的原始方法调用此方法
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize {
return [self getCommonDataWithCommandID:commandID
withChannelNumber:channelNo
withDataArray:dataArray
withByteArraySize:byteArraySize
feedbackExpected:NO];
}
这将扩展功能,但会保留旧界面。在 Swift 中,这会更简单,因为您可以添加一个可选参数(具有默认值的参数)。
有两种方法,第一种是在现有方法中添加参数,您必须更改每个使用(调用)该方法的地方。第二个是,使用该额外参数创建另一个方法并在需要时调用这个新方法,这样您就不需要更改项目中的其他内容
我有一个方法
-(NSData*)getCommonDataWithCommandID:(int)commandID withChannelNumber:(int)channelNo withDataArray:(NSArray*)dataArray withByteArraySize:(int)byteArraySize
{
}
这是从很多地方调用的,调用层次很大。如何从 dimSliderDecreasedTapped:
或 tapOnFifthChannel:
传递值这只是一部分!
现在我需要给这个方法添加另一个参数
bool isFeedbackExpected
但这会变成紫色 Open Closed Principle。
最好的方法是什么?
使用该参数添加另一个方法:
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize
feedbackExpected:(BOOL)feedbackExpected {
...
}
并从您的原始方法调用此方法
- (NSData*)getCommonDataWithCommandID:(int)commandID
withChannelNumber:(int)channelNo
withDataArray:(NSArray*)dataArray
withByteArraySize:(int)byteArraySize {
return [self getCommonDataWithCommandID:commandID
withChannelNumber:channelNo
withDataArray:dataArray
withByteArraySize:byteArraySize
feedbackExpected:NO];
}
这将扩展功能,但会保留旧界面。在 Swift 中,这会更简单,因为您可以添加一个可选参数(具有默认值的参数)。
有两种方法,第一种是在现有方法中添加参数,您必须更改每个使用(调用)该方法的地方。第二个是,使用该额外参数创建另一个方法并在需要时调用这个新方法,这样您就不需要更改项目中的其他内容