Questa è una domanda che vive nella mia mente da molto tempo.
L'uso di più istruzioni condizionali nidificate influisce sulle prestazioni di un codice acquisito? Finora so che i programmatori hanno creato un termine preciso per descrivere questa situazione, la famosa "Piramide del destino" [Wikipedia pagina] , ma a parte questo quanto può degradare le prestazioni?
Consideriamo questa situazione come un esempio: ho un JSON
proveniente da una risposta del server contenente alcuni oggetti che rappresentano gli acquisti dell'utente in un'applicazione, prima di prendere i dati necessari da esso ho bisogno di controllare varie condizioni:
- La risposta che stiamo cercando?
- La risposta ha
resultCode: OK
? - I contenuti da elaborare sono tutti?
A questo punto se tutto è true
inizierà un "processo di elaborazione", analizzando e modificando la risposta del server, in questo caso per cambiare il formato della data dagli Stati Uniti al formato europeo standard. Il processo consiste in due% co_de nidificate e una for-loop
.
Questo è il codice di esempio in if statement
, dal momento che sono uno sviluppatore iOS:
if ([remoteManager.operationId isEqualToString:NEEDED_OPERATION_ID]) {
if ([response[RESULT_CODE_KEY] isEqualToString:@"OK"]) {
if ([response[RESULT_OBJ_KEY][@"CONTENT_LIST"] count] > 0) {
NSMutableDictionary *tempDict = [[NSMutableDictionary alloc] init];
for (NSMutableDictionary *productsAvailable in response[RESULT_OBJ_KEY][@"CONTENT_LIST"]) {
for (NSString *key in productsAvailable) {
if ([key isEqualToString:@"NEEDED_KEY"]) {
/* We change the date format here */
}
}
}
}
}
}
A mio avviso questo codice non può davvero avere un impatto sulle prestazioni di un'applicazione perché tali controlli non sono così complicati da fare per il sistema. Ma questo può essere un problema se abbiamo bisogno di avere la massima velocità e le prestazioni? In altre parole: dovrebbero essere evitati condizionali nidificati o no? Inoltre, l'aggiunta di più condizioni contemporaneamente riduce i problemi di prestazioni (se presenti)?