- vừa được xem lúc

Những khó khăn khi làm dự án maintain ( dưới góc nhìn của một React Native Developer)

0 0 309

Người đăng: HueDiemDue

Theo Viblo Asia

Đi làm một vài năm ở công ty outsource, minh thấy hầu như các anh em đều khá e ngại với các dự án maintain, nhất là thuộc hàng code "siêu thối", spec thuộc loại "siêu to khổng lồ ",... Và mình cũng thế, mình cũng đang "theo đuổi" một chú em với "chức năng siêu to khổng lồ". Chứng kiến dự án "có người đến, có người đi, và có người ở lại" , mình cũng ngẫm thấy một chút "vị đời" gì đó.....

1. Sờ pếch dự án là...

Đối với một dự án outsource nào, vấn đề spec luôn là thứ quan trọng của cả dự án, nhất là đối với dự án lớn. Dev thì soi spec để code, QA soi spec để test, và đôi khi là để "oánh nhau" (lol).

1.1 Mò spec...

Dự án mình đang làm, có một đợt, một phía dev khác được thuê ngoài vào code cùng. Sau một thời gian rút lui, không để lại gì ngoài "đống bùi nhùi code trơ trọi", làm anh em dự án khá đau đầu về khoản xây spec dư lào ?. Dev dùng app mà gặp những case không biết là spec như vậy hay code lỗi nữa...

1.2 Ngôn từ sử dụng

Mình đã từng gặp trường hợp dev, QA, BrSE có cách nhìn khác nhau về một vấn đề. Cái chính là ngôn từ mà mình dùng giao tiếp với nhau. Vậy nên, các khái niệm cơ bản nên thống nhất rõ ràng với nhau, viết nhất quán với nhau trong spec.

Ví dụ như: Thế nào là Alert ? Thế nào là Toast? Khi nào thì trên app nên show alert, nên show toast.

Show alert khi báo cáo create account thành công, hay update profile thành công chẳng hạn.

Toast thì dùng khi mà thông báo đang chờ downloading file về, download success chẳng hạn.

1.3 Khi mình là "tấm chiếu mới" tới

Một dự án mà spec thuộc loại siêu khủng, mấy "tấm chiếu mới" được join vào tiếp xúc chắc không khỏi bỡ ngỡ, liệu bao giờ mình đọc hết đống spec này để mà code chớ. Đừng lo, mình cũng từng như thế nè. Cứ tới ticket nào anh leader assign thì mình lại kiếm spec đọc dần dần, không hiểu thì mạnh dạn hỏi thôi, mình là "chiếu mới mà" ?, chứ sao mà tiêu hoá hết chỗ đó. Mà khả năng xấu là spec chưa đầy đủ, spec cũ rồi còn "thốn" nữa, chứ đọc rồi check hoạt động hiện tại rồi chủ động hỏi thoai hehe.

1.4 Update spec kịp thời

Mình nghĩ đây là điều cũng khá quan trọng. Khi làm đôi khi mình có những suggest đóng góp, khách hàng OK, nhờ BrSE note luôn spec, update history, anh em sau nhìn vào đỡ "cãi nhau".

2. Code dự án

2.1 Base dự án

Với những dự án đã chạy lâu năm, nếu khi xây base mà không nhìn nhận vấn đề tốt, thì sau việc maintain rất khó khăn.

Không chỉ base, đôi khi chỉ là một function, nếu đặt theo cách tổng quát, sau này ta vẫn có cơ hội dùng lại hơn.

Ví dụ: Mình có một base component dành cho việc select ảnh. Ở 1 màn A, nếu select ảnh thì chỉ hiển thị ảnh tĩnh. Nhưng, từ màn B hay C lại được hiển thị all ảnh.

Mình có đọc được 1 cách xử lí của một bạn: bạn ý khi đi từ màn A tới màn select ảnh bạn ý truyền một bến typeScreen, nếu là màn A sẽ handle hide ảnh động, chỉ show ảnh tĩnh.

Cách làm tuy không sai, code vẫn chạy đúng, tuy nhiên, ở trường hợp này, nếu một màn D nào đó cũng có yêu cầu như màn A, mình lại phải sửa lại cả code ở màn select ảnh.

Thay vì đó, mình có thể truyền vào 1 biến hideImageStatic chẳng hạn, lúc này, ở màn D chỉ cần truyền biến đó như màn A thôi

2.2 Code dư thừa

Nhiều khi, CR nối tiếp CR, sợ rằng sau dùng tới mà người làm CR không xoá code cũ đi, comment lại , người sau vào thấy khá "rén" : ủa sao lại có màn này mà không dùng nhỉ, code này sao phải comment dòng này vậy, log gì debug xong mà còn nhiều thế này... ?

Vậy nên, anh em cố gắng code sạch, đẹp để anh em sau "hót" đỡ thắc mắc nhớ.

2.3 Code giống nhau ở every where.

Trong quá trình làm maintain, mình từng thấy có khá nhiều màn, code khá giống nhau, nhưng lại được viết ở rất nhiều chỗ.

Ví dụ như: Mình cần valid input nhập mail, mình có 3-4 màn dùng nó. Nhưng mỗi màn lại có một func validMail riêng.

Giả sử, cái code handle validMail đó của mình bị lỗi khi QA test 1 chức năng liên quan tới màn A thôi. Phía dev nhanh tay, tìm được một regex hợp lí, pass mọi trường hợp của QA. Nhưng đen cái, member đó mới vào dự án, thấy log màn A fix màn A thôi, mà không biết, còn B,C,D đang chờ fix.

Nhưng, nếu func này được viết ở một file ValidHelper nào đó, thì đã hay biết mấy...

Thế nên là, trường hợp này, code thì nên gọn gàng và khi vớ phải ticket kiểu như thế này, chúng ta nên check code và đưa ra một impact range chuẩn xác, tránh bị reopen ticket hay có quả boom nổ chậm dưới code. Tip của mình là valid mail rồi, chư search cụm "mail", "email" toàn app xem chỗ nào các cụ dùng...

2.4 Code lạc hậu quá rồi bạn ê...

Ví dụ về "bộ môn" React Native, mình thấy các bác facebook rất chăm update làm mới, nên dự án của mình, dù mới được hai năm thôi, nhưng cũng thấy code có vẻ lạc hậu roài ?.

Vậy nên, đôi khi cũng nên chịu khó update tin tức, làm mới bản thân xem thế giới dạo này như nào rồi...

RN 0.xx có lỗi này không biết tới RN 0.yy fix chưa nhỉ, thử phát cái nào...

Tổng kết

"Ai rồi cũng sẽ có lúc được maintain thôi" - theo mình nghĩ là thế (lol). Thế nên trong lúc code, hãy code xanh, sạch, đẹp và flexible nhất có thể để có thể là giúp người code sau, hoặc chính chúng ta nhìn lại, không muốn "đấm" vào mặt mình mấy cái nhé =))) .

Bình luận

Bài viết tương tự

- vừa được xem lúc

Create Certificates, Identifiers & Profiles App IOS

Mở đầu. Xin chào các bạn hôm này mình sẽ giới thiệu cho các bạn một cách tạo certificates, identifiers & profiles với tài khoản Apple Developer. Có tài khoản Apple Developer. Ai chưa có thì không cần đọc tiếp nha :.

0 0 36

- vừa được xem lúc

Chương 5 Object oriented programming

Chương 5 Object oriented programming. Tôi lần đầu tiên được giới thiệu về lập trình hướng đối tượng ở trường cao đẳng nơi tôi đã có một giới thiệu tóm tắc về c++.

0 0 24

- vừa được xem lúc

Hướng dẫn tạo link tracking nguồn cài đặt cho mobile app (xác định nguồn cài đặt cho mobile app)

Giới thiệu. Bạn đang chạy quá nhiều campaign cho ứng dụng mobile từ các mạng xã hội: facebook, twitter, ... các chiến dịch offline cũng như các chiến dịch online của bên thứ 3. Bạn không thể xác định được nguồn nào mang cho mình lượng install cao nhất. Vì nếu dùng shortlink thì chỉ đo được lượt clic

0 0 28

- vừa được xem lúc

SwiftUi: Bắt đầu từ những điều căn bản nhất. Phần 1

Trong bài này, bạn sẽ được tìm hiểu về việc tạo ra giao diện bằng việc khai báo và tuỳ chỉnh views, cách sử dụng các biến trạng thái để cập nhật giao diện thay vì dùng code. Tập sử dụng tính năng new preview và live preview, những trải nghiệm thú vị khi làm việc cùng với code và WYSIWYG layout.

0 0 57

- vừa được xem lúc

Những điều khác nhau cần biết giữa thiết kế ứng dụng Android và ứng dung iOS

Để tạo ra ứng dụng có trải nghiệm tốt nhất, tương thích với dòng thiết bị, bạn nên ghi nhớ sự khác biệt giữa 2 nền tảng iOS và Android. Các ứng dụng này không chỉ khác nhau ở phần trông như thế nào, chúng cũng khác nhau về cấu trúc và luồng ứng dụng.

0 0 26

- vừa được xem lúc

Một số thư viện hỗ trợ Animation cho ReactJS

Why. Bạn đang dạo quanh Internet và thi thoảng bắt gặp những giao diện website cực kì sáng tạo và mượt mà, những slider, button, animation như Mobile App vậy.

0 0 128