Tekli ise üçlü operatör - performans
Tek ve üçlü bir operatör kullanırken performansla ilgili biraz anlayışa ihtiyacınız var.
Değişkenlerini başlattığım bir sarmalayıcı örneği oluşturuyorum. Örneğin aşağıda:
public class MyWrapperClass{
public string sUserName;
public MyWrapperClass(){
this.sUserName = '';
}
}
Şimdi, arka uçtan döndürülen değerleri sarıcı değişkenlere atarken, arka uçtan döndürülen değerin boş olup olmadığını kontrol etmek için tek bir if kullanıyorum. Aşağıda yaptığım şey:
if(String.isNotBlank(myObj.myField__c)){
myWrapperInstance.sUserName = myObj.myField__c;
}
Burada başka bir koşulum yok çünkü değişkeni zaten boş bir dize olarak başlattım ve bu nedenle alan için değer yoksa, değişkenim boş bir dize tutacaktır.
Ancak, aşağıda kullanmanın mantıklı olup olmadığını anlamam gerekiyor:
myWrapperInstance.sUserName = String.isNotBlank(myObj.myField__c) ? myObj.myField__c : '';
VEYA
myWrapperInstance.sUserName = myObj.myField__c != null ? myObj.myField__c : '';
Performans açısından ikisinden daha iyi olanı anlamak için yardıma ihtiyacım var?
Yanıtlar
Bu formlar:
myWrapperInstance.sUserName = String.isNotBlank(myObj.myField__c) ? myObj.myField__c : myObj.myField__c;
ve
myWrapperInstance.sUserName = myObj.myField__c != null ? myObj.myField__c : myObj.myField__c;
elmadan portakaldır. String.isNotBlank()sadece kontrol etmekle kalmaz null, aynı zamanda boş ve tüm-beyaz-boşluk dizgelerini de kontrol etmez , bu da kontrol etmekten daha hesaplama açısından pahalıdır null. Performansla eşdeğer olmadıklarından, özel gereksinimleriniz için ihtiyacınız olanı kullanın.
Ek olarak, Apex derleyicisi orta derecede akıllıysa, bunların her ikisi de yazıldığı gibi optimize edilmelidir , çünkü karşılaştırma aynı çıktı ile sonuçlanır. (Yine de bu, sizin örneğinizde bir hata olduğundan şüpheleniyorum).
Üçlü operatörün veya bir ififadenin daha hızlı olup olmadığına gelince : Derek F.'in yorumladığı gibi, önemli değil. Performans etkisi, eğer varsa - ve yine, eğer Apex derleyicisi akıllıysa, hiç de farklı olmamalıdır - hem uygulamanızın diğer performans özellikleri tarafından tamamen etkilenecek ve tanımsız / gelecekteki Salesforce sürümlerinde değişime tabi olacaktır. . Endişelenme.