如何按照 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 中,这会更简单,因为您可以添加一个可选参数(具有默认值的参数)。

有两种方法,第一种是在现有方法中添加参数,您必须更改每个使用(调用)该方法的地方。第二个是,使用该额外参数创建另一个方法并在需要时调用这个新方法,这样您就不需要更改项目中的其他内容