► Phạm vi dự án

Các dự án nhỏ có quyền lựa chọn được ngôn ngữ phù hợp vì những chi phí phát sinh khi chuyển đổi code Swift nếu có thay đổi là không đáng kể. Mặc khác, các dự án lớn cần phải cẩn trọng khi tiếp nhận ngôn ngữ này. Swift vẫn chưa hoàn thiện và mỗi phiên bản (thậm chí là các phiên bản nhỏ) có thể kéo theo hàng loạt thứ chuyển đổi liên quan đến syntax và cách diễn đạt mới. Không ai lại muốn code của mình bị phá vỡ chỉ trong vài ngày mỗi khi phiên bản Swift mới ra mắt. Hoặc tệ hơn, trở thành lập trình viên suốt ngày đi giải thích với cấp quản lý hoặc các bên liên quan lý do tại sao code bị hỏng.

Xcode cung cấp các công cụ chuyển đổi Swift x code thành Swift x+1. Tuy nhiên, các công cụ lại không nắm bắt được hết mọi thứ. Đây không phải điều gì tồi tệ với đội ngũ Xcode vì đơn giản, 1 vài thay đổi liên quan đến ngôn ngữ gần như không thể tự động chuyển đổi nếu không hiểu rõ context đằng sau các dòng code đó.

  • Các mối bận tâm về kỹ thuật

Tự bản thân 2 ngôn ngữ Objective-C và Swift đã có rất nhiều ưu điểm kỹ thuật khác nhau.

xcode swift

► Hỗ trợ Tooling

Team Xcode đã cập nhật thành công quy trình lập trình để hỗ trợ Swift. Họ đã hoàn thiện được 1 ngôn ngữ phức tạp và hỗ trợ nó làm việc với 1 ngôn ngữ hoàn toàn khác (Objective-C). Thậm chí IDE còn chậm trễ và khả năng hỗ trợ tooling cho Swift cũng không đáng kể. Thỉnh thoảng, bạn may mắn có được syntax highlighting. Đôi khi, bạn vẫn code tiếp mà không autocomplete được. Và các công cụ refactoring lại không hoạt động. Nếu bạn muốn được hỗ trợ mạnh mẽ bởi các IDE hiện đại, bạn nên làm việc với Objective-C hoặc xem xét các IDEs khác.

► Runtime

Runtime của Objective-C mạnh mẽ hơn Swift. Trong những năm tới, runtime của Swift nhiều khả năng vẫn không bắt kịp được Objective-C. Nếu bạn đang có kế hoạch viết code để tận dụng reflection và nội quan (introspection) của các đối tượng và các types (thường xuất hiện ở các SDKs mạnh, nhưng thỉnh thoảng cũng có trong các ứng dụng thông thường), thì Objective-C rất vô dụng. Nếu bạn không hiểu câu vừa rồi đang đề cập đến vấn đề gì thì bạn nên bắt đầu với Swift.

► Tính ổn định của code

Swift là 1 ngôn ngữ lập trình an toàn, nhờ hệ thống typing và khắc phục lỗi mạnh mẽ. Nếu bạn đang nghiên cứu idiomatic và muốn tránh các operators ! trong code, chắc chắn không ít thì nhiều code của bạn cũng sẽ gặp những trường hợp lỗi tiềm tàng. Rò rỉ bộ nhớ từ 1 retain cycle là 1 ví dụ thường thấy trong code Swift và Objective-C. Lý do là vì hệ thống quản lý bộ nhớ tự đông (automatic reference counting system) không thay đổi.

► Làm việc với Foundation APIs

Nếu ứng dụng của bạn chủ yếu sử dụng foundation APIs (như CoreFoundation, AVFoundation và CoreAnimation), bạn nên nghiêng về phương án Objective-C. Swift có các wrappers bền vững và giúp quản lý bộ nhớ mượt mà hơn, như đây vẫn là những function calls dựa trên C APIs và C, nên sẽ tự động tương thích với Objective-C codebase.

► Dùng code C++

Tương tự như Foundation APIs, sử dụng các thư viện C++ hoặc lập trình trên nền tảng chéo C++ SDK sẽ tự thích ứng với dự án Objective-C. Bạn không thể nhập C++ vào các file Swift. Để dùng được Swift, bạn phải trải qua nhiệm vụ buồn chán, mệt mỏi, thường phải gặp bug là tạo wrapper classes Objective-C hoặc Objective-C++. Bạn phải bắt cầu, bổ sung thêm mỗi lần muốn dùng 1 phần khác của 1 thư viện C++. Nếu bạn định tận dụng C++ thì Objective-C sẽ phù hợp hơn.

Hết phần 2…

Gramy via IDEAcademy

SHARE

LEAVE A REPLY