Nó là một rất tốt thực hành để thiết lập bất kỳ biến một số giá trị được xác định trước khi nó được sử dụng. Không làm như vậy sẽ gây ra tất cả các loại vấn đề. Phần còn lại phụ thuộc rất nhiều vào các công cụ mà bạn đang sử dụng.
Trình biên dịch tốt sẽ cho bạn biết nếu bạn đang sử dụng một biến chưa được xác định trước khi bạn sử dụng nó hoặc nơi trình biên dịch không thể chứng minh rằng nó được xác định trước khi bạn sử dụng nó. Một trình biên dịch xấu (hoặc một trình biên dịch tốt được sử dụng bởi một nhà phát triển không biết cách sử dụng các công cụ của họ đúng cách) sẽ không làm điều đó. Với một trình biên dịch tốt, initialisation để nil hoặc NULL có thể ngăn chặn trình biên dịch từ làm công việc của mình đúng cách. Hãy xem xét ví dụ này, nơi mà bạn thực sự muốn mã để trả lại một NSString đó không phải là con số không nhưng đã không nhận được nó ngay:
NSString* result;
if (condition) result = @"True";
else if (otherCondition) result = @"False";
return result;
Dưới đây trình biên dịch có thể cảnh báo bạn bởi vì bạn có thể trả về một kết quả không xác định. Nếu bạn khởi tạo kết quả là nil, bạn vẫn có cùng một vấn đề mà bạn có thể trả về nil trong một hàm không phải trả về nil, nhưng trình biên dịch không thể cảnh báo bạn.
Mặt khác, nếu giá trị phải là không, hoặc nếu nil là giá trị chấp nhận được và bạn không đặt biến thành giá trị khác trong một số trường hợp, thì khởi tạo thành 0 là tốt và tốt thực hành.
Tóm tắt: Sử dụng trình biên dịch và thiết lập trình biên dịch đúng cách để nó sẽ cho bạn biết nếu bạn đang sử dụng các biến chưa được khởi tạo. Nếu bạn nhận được cảnh báo về các biến chưa được khởi tạo, hãy khắc phục sự cố, chứ không phải cảnh báo.
Lưu ý rằng trình biên dịch phải phàn nàn lớn về mẫu đó. Một ý tưởng tốt hơn là không tái phát minh ra bánh xe bằng cách sử dụng API sqlite trực tiếp; có cả trình bao bọc bên thứ ba cung cấp cho bạn các API cấp cao hơn sẽ giúp phát triển nhanh hơn hoặc bạn có thể sử dụng Dữ liệu cốt lõi, điều này sẽ giúp bạn tích hợp tốt hơn với toàn bộ hệ thống. – bbum
Cảm ơn bạn đã bình luận bbum. Bạn hoàn toàn đúng. – objlv