NHỮNG MÁNH KHOÉ “KHÔNG BAO GIỜ TIẾT LỘ” CỦA CÁC LẬP TRÌNH VIÊN VĨ ĐẠI

Ngày đăng: Thứ Năm, 26/09/2019

Mánh khóe thứ nhất: Không bao giờ truyền dạy các “mánh khóe” này cho người khác. Hết bài.

Đùa đấy, các bạn đừng gạch đá mình tội nghiệp, mình buồn. Chẳng là dạo này mình chán stackoverflow, chuyển qua quora nghịch ngợm đôi chút. Đây cũng là một trang web hỏi đáp tương tự như stackoverflow, nhưng phạm vi rộng hơn rất nhiều, bao gồm toàn bộ mọi lĩnh vực đời sống.

Một điểm đặc biệt nữa là nó cho phép hỏi những câu chung chung hoặc “nhảm nhí”, do đó có rất nhiều câu hỏi – trả lời thú vị và “bá đạo” như: Mac Zuckerberg có giỏi PHP hay không? Tại sao người đời lại ghét sản phẩm của Apple? Làm sao nghe lén điện thoại bạn gái?… đủ thứ trên trời dưới đất.

Mình khuyên các bạn nên bỏ đi ít thời gian cho facebook, rảnh rỗi thì lên đây xem các câu hỏi về Computer Science/Computer Programming, sẽ học được nhiều điều thú vị lắm, giải trí cũng tốt nữa. Bài viết này là tổng hợp và chọn lọc những ý tưởng, câu trả lời hay của câu hỏi: What are the best-kept secrets of great programmers? – Những mánh khóe “không bao giờ tiết lộ” của các lập trình viên vĩ đại.

quora-logo

 

Mánh khóe code và test

  • Trong đa phần các trường hợp, sử dụng inheritance (kế thừa) là một design TỆ, làm cho code khó test và khó bảo trì. Hãy chuyển qua composition (sở hữu) và kết hợp với interface. (Có thể đọc thêm vềprefer composition over inheritance).
  • Đừng sử dụng interface cho tới khi bạn hoàn toàn rõ ràng về domain của chương trình. (Mỗi khi cần thêm 1 function, bạn sẽ phải thêm nó vào interface và implement của interface đó, gấp đôi công sức).
  • Bảo mật/mã hóa rất khó. Đừng tự làm MÀ hãy tái sử dụng (sử dụng thư viện, thuật toán có sẵn v…v), trừ khi bạn biết rõ mình đang làm gì.
  • Có vô vàn nguyên nhân làm crash một chương trình: deploy sai cách, input bị lỗi, người dùng dùng sai cách, quá tải … Chuẩn bị sẵn sàng cho những điều đó: Ghi log những exception gặp phải, deploy thử lên server test, đặt giới hạn cho bộ nhớ…
  • Kết nối mạng (HTTP, socket) rất dễ xảy ra vấn đề. Luôn nhớ đặt timeout cho các kết nối này, sử dụng thư viện để wrap chúng, retry nếu kết nối có vấn đề.
  • Mỗi dòng code thêm vào sẽ làm chương trình phức tạp thêm một chút, tăng khả năng có bug. Bỏ bớt code là cách hay nhất để giảm bớt số lượng bug =))).
  • Validate những thứ người dùng nhập vào, vừa đảm bảo tính bảo mật, lại hạn chế được bug.
  • Tái sử dụng code chưa chắc đã khiến code của bạn dễ bảo trì hơn. Tái sử dụng code giữa 2 domain khác nhau có thể làm chúng “dính chặt” với nhau hơn.
  • Chỉ test những thứ cần test, test ít thì dễ sót bug, test nhiều thì sẽ mất thời gian và tốn công update test case mỗi khi đổi requirement.
  • Mỗi khi commit code, hãy giữ số lượng code nhỏ, code chạy được, viết message rõ ràng bao gồm thứ bạn đã làm và lý do bạn làm thứ đó.
  • Với kiến trúc tốt, bạn vẫn có thể viết code lô. Tuy nhiên, với kiến trúc tốt, bạn có thể dễ dàng nâng cấp, thay thế phần code đểu đó. Tập trung xây dựng kiến trúc tốt, ít móc nối trước, về sau sẽ dễ thở hơn.
  • Code để lâu cũng rất dễ hư hỏng, do đó cần được refactor thường xuyên. Tuy nhiên cần tránh refactor code quá độ.

abcd

Mánh khóe làm việc

  • Rất khó để ước đoán thời gian cần làm để hoàn thành một module/dự án, đó là lý do người ta dùng Scrum.
  • Viết code để cho chính mình và người khác đọc. Thêm comment để giải thích “Vì sao”, thêm comment ở những nơi mà bạn nghĩ 1 năm sau bạn đọc code sẽ không hiểu gì.
  • Hiểu rõ thư viện/framework mà mình sử dụng, đừng có gắng viết lại từ đầu những thứ người khác đã tốn công viết rồi.
  • Cài đặt để việc build một project diễn ra nhanh chóng tiện lợi nhất có thể. Hãy chắc chắn bạn có thể build bằng command line, sẽ rất có ích (Có thể kích hoạt build từ xa, hoặc đưa project lên CI chẳng hạn).
  • Hiểu rõ những tool bạn sử dụng (IDE, source control, build tool, Photoshop). Cố gắng tìm hiểu và làm quen với việc dùng các hotkey, hạn chế dùng chuột. Bạn sẽ làm việc nhanh hơn và “pro” hơn.
  • Ngồi lâu rất có hại. Hãy tập một số thói quen để đảm bảo sức khỏe khi làm việc: Không ngồi nhiều, lâu lâu cho mắt nghỉ ngơi, sắp xếp bàn làm việc, bàn phím, chuột sao cho làm việc thoải mái…
  • Đừng áp dụng lung tung các framework/process/pattern vào dự án để “thể hiện”. Không phải lúc nào Test-Driven Development cũng tốt, không phải lúc nào cũng nên áp dụng DI/IoC.

Nguồn: toidicodedao

CÁC TIN TỨC, SỰ KIỆN KHÁC


MỘT SỐ TOOL HỮU ÍCH DÀNH CHO WEB DEVELOPER CÓ THỂ BẠN CHƯA BIẾT
Một số tool hữu ích dành cho web developer có thể bạn chưa biết
Thứ Sáu, 18/10/2019 bởi Nguồn: Topdev

Ngày nay lĩnh vực công nghệ phát triển một cách vượt bậc, bên cạnh đó sự trải nghiệm người dùng cũng được theo đó mà tăng lên đáng kể. Đằng sau những giao diện bắt mắt là những ý tưởng mới mẻ, tốn rất nhiều công sức của Developer. Dưới đây mình tổng hợp một số công cụ hữu ích cho một lập trình viên web được chọn lọc qua nhiều nguồn khác nhau.


LẬP TRÌNH WEBSITE LÀ GÌ? CÁCH HỌC LẬP TRÌNH WEB CƠ BẢN
Lập trình website là gì? Cách học lập trình web cơ bản
Thứ Năm, 17/10/2019 bởi Sưu tầm

Lập trình web là công việc có nhiệm vụ nhận toàn bộ dữ liệu từ bộ phận thiết kế web để chuyển thành một hệ thống website hoàn chỉnh có tương tác với CSDL và tương tác với người dùng dựa trên ngôn ngữ máy tính.


LẬP TRÌNH VIÊN FULLSTACK LÀ GÌ?
Lập trình viên Fullstack là gì?
Thứ Ba, 15/10/2019 bởi Aptech Đà Nẵng

Chắc hẳn khi mới bước vào thế giới công nghệ, thế giới lập trình bạn đã nghe về từ "Full stack", "Lập trình viên Full stack". Vậy Lập trình viên Fullstack là gì? Học cái gì để trở thành Lập trình viên Fullstack. 


BÁO CÁO MỚI NHẤT QUÝ II VỀ TÌNH HÌNH NHÂN LỰC IT TẠI VIỆT NAM
Báo cáo mới nhất quý II về tình hình nhân lực IT tại Việt Nam
Thứ Tư, 09/10/2019 bởi Nguồn bài viết: TopDev

Báo cáo được thực hiện bởi TopDev – một trong những đối tác tại các sự kiện của Aptech, dựa trên các khảo sát ý kiến từ hàng ngàn khách hàng, đối tác, ứng viên và nhà tuyển dụng trong ngành IT. Bên cạnh đó, TopDev cũng đã sử dụng các dữ liệu tuyển dụng trong 4 năm qua để hoàn thành báo cáo này.


6 LỢI ÍCH KHI LẬP TRÌNH WEB VỚI PHP VÀ MYSQL
6 Lợi Ích Khi Lập trình Web Với PHP Và MySQL
Thứ Tư, 09/10/2019 bởi Sưu tầm

PHP là ngôn ngữ kịch bản được sử dụng nhiều nhất để lập trình web. Mặc dù PHP đã được phát hành 25 năm trước nhưng nó vẫn đang tăng mức độ phổ biến của nó với tốc độ không đổi (tăng trưởng đều qua các năm).


BẰNG CẤP QUỐC TẾ MANG LẠI ĐIỀU GÌ CHO BẠN?
Bằng cấp quốc tế mang lại điều gì cho bạn?
Thứ Tư, 02/10/2019 bởi Aptech Đà Nẵng

Bằng đại học của Việt Nam không được công nhận ở các nước phát triển nhưng sở hữu kiến thức chuyên sâu về CNTT thì bạn hoàn toàn có thể làm việc ở bất cứ đâu.

XEM THÊM


KẾT NỐI VỚI CHÚNG TÔI