Những điểm mới trong Swift 3? (phần 1)
Swift 3 xuất hiện đã mang đến cho các dev Swift những thay đổi lớn về code. Nếu bạn vẫn chưa theo dõi dự án Swift Evolution kĩ lưỡng, bạn có thể thắc mắc những thay đổi trong store là gì, nó ảnh hưởng như thế nào đến code và khi nào bạn nên bắt đầu chuyển code sang Swift 3.
Bài viết sẽ nhấn mạnh những thay đổi quan trọng nhất trong Swift 3 ảnh hưởng đến code của bạn.
Getting Started
Swift 3 preview đã có sẵn trong Xcode 8 beta ra mắt vào ngày 15/06. Trong khi sự nâng cấp của Swift 3 đang giãn bớt, thì vẫn có 1 số thay đổi được chấp nhận trong những tháng sắp tới. Việc kết thúc các tính năng mới sẽ xảy ra khi Xcode đạt được GM vào cuối năm 2016, nên bạn sẽ cần đợi cho đến lúc đó để đưa các app Swift 3 lên App Store. Để tạo điều kiên để các dev gia nhập Swift 3 theo những kì hạn riêng, Apple đã bao gồm Swift 2.3 như cập nhật nhỏ với Xcode 8. Swift 2.3 với sư hỗ trợ dành cho các tính năng của SDKs và Xcode công bố ở WWDC. Khi Xcode 8 ra khỏi phiên bản beta, bạn sẽ có thể đăng apps sử dụng Swift 2.3 nếu bận vẫn chưa chuyển sang Swift 3.
Người viết khuyến khích các dev nên thử nghiệm các tính năng được thảo luận trong playground và thậm chí chạy Migration Assistant với 1 trong các dự án của bạn, để bạn có thể cảm nhận về những thay đổi. Nhưng vì không thể ra mắt app trên App Store cho đến khi Xcode 8 không còn beta nữa và Apple chốt Swift, nên bạn có lẽ cần chờ đợi thêm thời gian để chuyển code sang Swift 3.
Chuyển sang Swift 3
Khi chuyển đổi sang Swift 3, lưu ý rằng tất cả các file cũng cần thay đổi. Ví dụ, tất cả tên của Cocoa API đã thay đổi hoặc API vẫn tương tự nhưng có 1 tên phù hợp cho Objective-C và 1 tên phù hợp cho Swift. Swift 3 đang dự định sẽ biến việc viết ngôn ngữ Swift trở nên tự nhiên hơn trong những năm tới.
Apple đã tích hợp Migration Assistant với Xcode 8 để tận dụng hầu hết các thay đổi trong cùng 1 lúc. Đừng ngạc nhiên nếu bạn cần tự mình chỉnh sửa vài chỗ nếu migrator không tự động giải quyết được.
Bạn có thể chuyển sang Swift 2.3 hoặc Swift 3 ngay lập tức. Nếu bạn cần sao lưu, thì hãy điều hướng trong Xcode đến Edit > Convert > To Current Swift Syntax…. May mắn là bộ phận compiler khá thông minh, tương tự như Migration Assistant. Nếu bạn vô tình sử dụng API cũ trên 1 method call, bộ phận compiler sẽ đề xuất lựa chọn Fix-It, giúp bạn sử dụng đúng API hiện đại.
Tin tuyệt vời nhất là Swift 3 dự định là phiên bản ra đời cuối cùng với các thay đổi lớn về source. Lúc đó, bạn có thể giữ code Swift của mình ở mọi phiên bản. Trong khi nhóm Swift của Apple không thể dự đoán được tương lai, họ đã hứa rằng nếu cần phá vỡ tính tương thích của source, họ sẽ đề xuất vòng đời suy thoái dài hơn. Điều đó đồng nghĩa rằng ngôn ngữ đã đat được sự ổn định về source, khuyến khích số công ty truyền thống chấp nhận ngôn ngữ tăng nhiều hơn.
Nhìn chung, mục tiêu đạt sự ổn định nhị phân vẫn chưa đạt được và bạn sẽ nhận ra ảnh hưởng của điều này vào cuối bài viết.
Các proposal Phát triển Swift đã được thực hiện
Các thành viên của cộng đồng đã gửi đi hơn 100 proposals cho các thay đổi của Swift kể từ khi Swift là nguồn mở. Khoảng 70 prốpal đã được chấp nhận sau quá trình thảo luận và điều chỉnh. Những proposal bị reject cũng đã dấy lên 1 số cuộc thảo luận căng thẳng, nhưng team Swift vẫn đưa ra quyết định cuối cùng cho các proposal.
Sự hợp tác giữa team và cộng đồng rộng hơn khá ấn tượng. Trên thực tế, Swift đã nhận được 30.000 sao trên Github. Rất nhiều proposal mới đã được tải lên mỗi tuần, tuần này qua tuần khác. Thậm chí các kỹ sư của Apple viết các proposal trên kho lưu trữ Github mở khi họ muốn tạo ra các sự thay đổi. Ở các mục bên dưới, bạn sẽ thấy các tags được liên kết như [SE-0001]. Đây là những con số các proposal Phát triển Swift được chấp nhận và sẽ được thực hiện ngay khi bản Swift 3 cuối cùng ra đời. Các liên kết đến mỗi proposal đã được bao gộp nên bạn có thể tìm hiểu chi tiết về mỗi thay đổi.
Các thay đổi về API
Cập nhật lớn nhất trong Swift 3 liên quan đến thư viện chuẩn chấp nhận các quy ước đặt tên nhất quán xuyên suốt các thư viện. Hướng dẫn API Design Guidleines gồm các nguyên tắc mà nhóm làm Swift của Apple phải giải quyết khi nhóm đang xây dựng Swift 3, đảm bảo giá trị cao hơn vè khả năng đọc và tiếp cận đối với các lập trình viên mới. Nhóm đã vận hành dựa trên nguyên tắc rằng “Thiết kế API tốt luôn xem xét call site”. Họ đã cố gắng để mang đến sự rõ ràng cho điểm sử dụng.
Cụ thể, đây là những thay đổi nhiều khả năng ảnh hưởng đến bạn, các dev iOS.
Parameter Label đầu tiên
Hãy bắt đầu với sự đảo chiều trực tiếp của 1 practice mà bạn sử dụng mỗi ngày trong Swift.
Nếu bạn không yêu cầu khác thì parameter đầu tiên trong các function và các methods hiện tại đều có 1 label. Trước đây, khi bạn call 1 function hoặc method, bạn đã bỏ qua parameter label đầu tiên [SE-0046]:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// old way, Swift 2, followed by new way, Swift 3
"RW" . writeToFile ( "filename" , atomically : true , encoding : NSUTF8StringEncoding )
"RW" . write ( toFile : "filename" , atomically : true , encoding : NSUTF8StringEncoding )
SKAction . rotateByAngle ( CGFloat ( M_PI_2 ) , duration : 10 )
SKAction . rotate ( byAngle : CGFloat ( M_PI_2 ) , duration : 10 )
UIFont . preferredFontForTextStyle ( UIFontTextStyleSubheadline )
UIFont . preferredFont ( forTextStyle : UIFontTextStyleSubheadline )
override func numberOfSectionsInTableView ( tableView : UITableView ) -> Int
override func numberOfSections ( in tableView : UITableView ) -> Int
func viewForZoomingInScrollView ( scrollView : UIScrollView ) -> UIView ?
func viewForZooming ( in scrollView : UIScrollView ) -> UIView ?
NSTimer . scheduledTimerWithTimeInterval ( 0.35 , target : self , selector : #selector(reset), userInfo: nil, repeats: true)
NSTimer . scheduledTimer ( timeInterval : 0.35 , target : self , selector : #selector(reset), userInfo: nil, repeats: true)
|
Ghi chú lại cách các định nghĩa method sử dụng các giới từ như “of”, “to”, “with” và ” in” cho các tên ngoài. Đây là 1 phần của nỗ lực để tối ưu hóa khả năng đọc. Nếu method call các reads tốt mà không cần 1 giới từ và không cần 1 label, bạn nên loại trừ 1 cách rõ ràng tên parameter đầu tiên với 1 dấu gạch dưới:
1
2
3
4
|
override func tableView ( _ tableView : UITableView , numberOfRowsInSection section : Int ) -> Int { . . . }
override func didMoveToView ( _ view : SKView ) { . . . }
|
Trong nhiều ngôn ngữ lập trình, methods có thể chia sẻ 1 tên base và đề xuất nhiều tên parameter khác nhau. Swift cũng không ngoại lệ, hiện nay bạn sẽ bắt gặp các tên method quá tải nhiều hơn vì các API được dịch trực tiếp hơn. Đây là ví dụ về 2 hình thức của index()
1
2
3
4
5
6
|
let names = [ "Anna" , "Barbara" ]
if let annaIndex = names . index ( of : "Anna" ) {
print ( "Barbara's position: \(names.index(after: annaIndex))" )
}
|
Thêm nữa, những thay đổi của tên parameter cũng khiến method thống nhất và dễ học hơn.
Loại bỏ những từ không cần thiết
Trong các vòng lặp đi lặp của thư viện Apple trước đây, methods gồm 1 tên ám chỉ giá trị return của chúng. Bởi vì khả năng kiểm tra type của Swift compiler, điều này trở nên kém cần thiết hơn. Nhóm Swift đã cố gắng để tìm ra cách làm thế nào lọc tất cả các tiếng ồn để chỉ còn những tín hiệu và nhờ đó, rất nhiều từ lặp đi lặp lại đã được gỡ bỏ.
API thông minh hơn khi các thư viện được chuyển đổi sang Swift gốc [SE-0005]:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// old way, Swift 2, followed by new way, Swift 3
let blue = UIColor . blueColor ( )
let blue = UIColor . blue ( )
let min = numbers . minElement ( )
let min = numbers . min ( )
attributedString . appendAttributedString ( anotherString )
attributedString . append ( anotherString )
names . insert ( "Jane" , atIndex : 0 )
names . insert ( "Jane" , at : 0 )
UIDevice . currentDevice ( )
UIDevice . current ( )
|
- Sử dụng Mạng xã hội để tạo giá trị cho start-up ?
- Cải tiến qui trình phần mềm?
- Tặng Mã nguồn website thương mại điện tử lĩnh vực may mặc, Thêu Gia Công
- 4 năm nữa, 80% người Việt Nam sẽ dùng điện thoại di động
- Mua sắm trực tuyến phát triển mạnh tại Việt Nam
- Các chuyên gia Java mà bạn nên theo dõi
- Chiến lược Mobile-First giúp doanh nghiệp & startup tạo ra sản phẩm tốt hơn và tiếp cận thị trường nhanh hơn
- Các quy định về phát hành và quảng cáo game
- Ứng dụng nền web đang lên ngôi
- Các xu thế chi phối sự chuyển dịch của di động năm 2014
- Giá gia công phần mềm, giá viết ứng dụng, giá thiết kế website
- E-Logistics: Công nghệ cao, thân thiện
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>