Xin đừng đánh nhau với Framework
Bài đăng này đã không được cập nhật trong 3 năm
Xin bắt đầu bằng câu chuyện rùa và thỏ.
Phiên bản 1: Như mọi người đã biết, rùa thắng thỏ vì rùa rất chăm chỉ, chậm và chắn chắn.
Sau khi thua rùa, thỏ ta rất cay cú nói với thỏ con: "Đời cha đã thua rùa vì không chăm chỉ, đời con, con nhất định phải lấy lại danh dự cho nhà Thỏ, không được lười biếng tích cực luyện tập để phục thù". Và khi thỏ con trưởng thành, thỏ con thách đấu với rùa con.
Phiên bản 2: "Toét, toét, toét!" Thỏ con và rùa con cắm đầu chạy. Chạy một hồi, thỏ con không dám nghỉ, chạy một mạch. Sau cùng, Rùa con vẫn thắng bởi Thỏ con mải mê chạy quá mà không chú ý đến đường đi, không nghiên cứu kỹ bản đồ, không suy nghĩ kỹ về mục tiêu phải chạy. Và cuối cùng là thỏ con bị lạc lối, chạy mãi, chạy mãi mà ko thấy đích đâu cả. Cuối cùng khi đến nơi thì rùa đã đến từ lúc nào.
Phiên bản 3: Thỏ con rất cay cú và truyền lại cho đời thỏ cháu. Các con phải rửa hận cho nhà thỏ chúng ta. Đời ông thì vì lười biếng mà thua, đời cha thì do không xác định được mục tiêu, không nghiên cứu kỹ trước khi làm nên lại thảm bại trước nhà rùa. Vì vậy, đời con nhất định phải thắng.
Và khi thỏ cháu trưởng thành, thỏ cháu thách đấu rùa cháu. "Toét toét toét!" thỏ cháu và rùa cháu bắt đầu chạy. Và lần này, chiến thắng đã thuộc về .... Rùa cháu. Vì rùa cháu chạy ra đường, vẫy 1 chiếc taxi và phóng thẳng về đích, mặc cho thỏ cháu đang hùng hục chạy.
Bài học rút ra ở đây là, chúng ta chăm chỉ rồi chưa đủ, chúng ta đã biết xác định mục tiêu, nghiên cứu chiến thuật kỹ trước khi ra trận vẫn chưa đủ mà chúng ta còn cần phải học cách sử dụng công cụ. Rùa cháu biết sử dụng công cụ nên vẫn chiến thắng.
Trong cuộc sống thật cũng vậy, chúng ta đôi khi cắm đầu cắm cổ vào làm, mất rất nhiều thời gian, sau đó chúng ta hả hê sung sướng vì đã làm những chương trình hết sức ghê gớm, hết sức khủng khiếp. Sau đó chúng ta nhìn vào framework thấy là, ô, nó cũng đã có rồi mà, chỉ việc sử dụng thôi. Và mặt chúng ta dài ra, vì tiếc rằng đã ko nghiên cứu kỹ những thứ mà framework đã có sẵn cho chúng ta. Nếu nghiên cứu kỹ một chút chúng ta đã có thể rút ngắn đi được rất nhiều thời gian phát triển phần mềm. Và liệu 1 mình chúng ta, hoặc cứ cho là một nhóm chúng ta có thể giỏi hơn một tập thể hàng nghìn những con người ưu tú, trong một tổ chức mà tổng thu nhập của nó lớn hơn rất nhiều lần Việt Nam? câu trả lời là có, có thể nhưng xác suất chỉ là 1 / 1.000.000.000.000.000 e+100000. Vì vậy, chúng ta hãy học tập cách sử dụng cái ô tô trước khi nghĩ đến việc sáng chế, phát minh ra một loại ô tô mới. Và theo kinh nghiệm của tôi, thứ tự ưu tiên tìm hiểu như sau:
- Tìm hiểu các framework có sẵn của Apple (nếu là iOS, MacOS), Google (nếu là Android), Microsoft (nếu là WindowsPhone). Vì chắc chắn cha mẹ bao giờ cũng có trách nhiệm tối cao với những đứa con của mình
- Các thư viện có sẵn. Nhưng các bạn cũng đừng dựa hoàn toàn vào nó, hãy tìm hiểu xem nó được viết ra thế nào. Và trong quá trình tìm hiểu, trình độ của bạn đã được tăng lên rất nhiều. Và có nhiều thư viện đã từng rất tốt, nhưng sau một thời gian, Apple thấy rằng nó cần thiết, và họ thêm vào trong API ở phiên bản mới của mình. Và các bạn cũng cần chú ý đến những điều đó để thay những thư viện không chính thống bằng những thư viện chính thống từ Apple.
- Cuối cùng là viết thư viện của bản thân bạn để có thể tái sử dụng.
Thế nào là đánh nhau với Framework
Bạn bỏ qua những điều mà Framework cung cấp và tạo ra một thứ của riêng bạn. Ví dụ
- Bạn replace view trong UIViewController, và thay bằng cái của bạn
- Khi muốn chia màn hình, bạn tự làm cái của bạn, thay vì sử dụng SplitViewController
- Bạn muốn làm một Class Button mới có thể thay đổi trạng thái khi bấm với một tham số là isSelected sau đó thấy thông báo bị duplicate property, thế là bạn chuyển nó sang isChoosen sau đó cắm đầu cắm cổ viết mà ko biết đươc rằng Button nó đã có sẵn property selected và setImage for selected stage.
- Bạn tạo một cái UIView để thay cho navigation bar, sau đó lại khốn khổ để làm thế nào cho các thành phần navigation bar nó chạy mượt mà. Trong khi đó chúng ta đã có sẵn UINavigationController để điều khiển những việc như vậy, và chúng ta hoàn toàn có thể thay đổi và custom nó.
- Bạn muốn tạo một cái bảng mà nội dung, layout của nó chẳng mấy khi thay đổi và bạn đâm đầu vào code với một cái dynamic tableView với một loạt các reuse cell, return cell, rồi numberRowsInSections. Trong khi đó, đã có sẵn cả một loại staticTableView để bạn sử dụng trong trường hợp đó.
- Bạn muốn làm một quyển sách mà có thể lật ra lật vô. Bạn lao vào làm luôn trên một UIViewController, với đủ các container, đủ các UIView và animation. Mà bạn ko biết rằng đã có một UIPageViewController đã có sẵn, và bạn chỉ việc config nội dung của bạn vào mà thôi.
- Bạn muốn hiện 1 thông báo kiểu popup, và bạn lao vào làm luôn với 1 cái View, sau đó bạn add lên Windows và giải quyết một đống các vấn đề về tọa độ, về điểm gắn arrow. Trong khi đó rất đơn giản, bạn chỉ cần kéo một segue với cái tên là PopoverSegue rồi config nó thế là xong.
Dĩ nhiên là cái gì cũng có cái giá của nó, khi bạn làm những việc đó, tay bạn sẽ to ra, đầu bạn sẽ to ra, mắt bạn sẽ lồi ra, và bạn sẽ trở thành những coder vĩ đại. Nhưng đó là trong trường hợp bạn có đủ thời gian để nghiên cứu tất cả, giống như việc bạn trường sinh bất lão, hoặc chí ít thì cũng sống đến 200, 300 tuổi. Nhưng hầu hết mọi người chỉ sống đến 100 tuổi thôi nên tôi sẽ ko chọn cách 1 mình khiêu vũ với bầy sói vậy. Mà tôi sẽ chọn cách đứng trên vai những người khổng lồ, học tập những cái họ đã làm và sử dụng nó một cách thành thục. Chúng ta muốn đi nhanh, chúng ta không thể chỉ dùng sự kiên trì, sử dụng sự định hướng tốt, chúng ta còn cần phải biết cách dùng công cụ. Và một trong những công cụ quan trọng nhất đó là học tập từ Framework, sử dụng thành thạo Framework. Ngoài ra còn rất nhiều công cụ khác nữa? Nếu các bạn like và share bài viết đủ 100, tôi sẽ tiết lộ cho các bạn biết những bí mật tiếp theo.
All rights reserved