# 45: Thành thạo IDE của bạn

Vào thập niên 80, khi mà những môi trường lập trình thường không có gì sánh bằng những trình biên soạn text. Làm nổi bật lên các cú pháp, là việc mà chúng ta công nhận bấy giờ là một điều xa xỉ mà không phải ai cũng có thể làm được. Những chiếc máy in để định dạng code một cách đẹp đẽ thường là công cụ bên ngoài được sử dụng để sửa khoảng cách. Debuggers cũng là những chương trình rời rạc được chạy để bỏ qua code của chúng ta, nhưng lại với một loạt các thao tác phím bí mật.

Trong suốt những năm thuộc thập niên 90, các công ty bắt đầu nhận ra được tiềm năng kinh tế mà họ có thể chuyển hóa từ việc trang bị thêm các lập trình viên có công cụ tốt hơn và hữu ích hơn. Môi Trường Thiết Kế Hợp Nhất (IDE) đã tập hợp các tính năng được chỉnh sửa trước đó với một bộ biên dịch, một debugger, một máy in tốt và các công cụ khác. Trong khoảng thời gian đó, các menu và chuột máy tính cũng trở nên nổi tiếng, điều đó có nghĩa rằng sẽ chẳng bao lâu nữa các nhà phát triển sẽ cần nghiên cứu về các chìa khóa bí mật để sử dụng chương trình biên soạn của họ. Họ có thể dễ dàng lựa chọn lệnh từ menu.

Đến thế kỉ 21, các IDE đã thực sự trở nên phổ biến đến mức chúng được tặng miễn phí bởi các công ty muốn giành lấy thị phần trong các lĩnh vực khác. IDE hiện đại đã được trang bị một hệ thống các tính năng tuyệt vời. Tính năng mà tôi rất yêu thích là tự động tái cấu trúc, đặc biệt là Extract Method, đó là nơi mà tôi có thể lựa chọn và biến đổi một mảng code theo một thứ tự nhất định. Công cụ tái cấu trúc sẽ biến tất cả thông số cần được duyệt thành một hệ thống thứ tự, là thứ sẽ làm cho hoạt động sửa đổi code trở nên cực kì dễ dàng. IDE của tôi còn phát hiện các mảng code khác có thể được thay thể bởi hệ thống này và cũng đưa ra câu hỏi liệu rằng tôi có muốn thay thế chúng hay không.

Một tính năng ngạc nhiên nữa của những IDE hiện đại đó chính là khả năng ép buộc các kiểu quy tắc trong phạm vi một công ty. Ví dụ, trong ngôn ngữ Java, một vài lập trình viên đã làm tất cả các tham số cuối cùng (đó là việc mà tôi cho là khá tốn thời gian). Tuy nhiên, kể từ khi họ có một kiểu quy tắc riêng, tất cả tôi cần để theo dõi nó đó chính là cài nó vào IDE của tôi: Tôi sẽ nhận được một cảnh báo cho bất cứ tham số nào chưa đến cuối cùng. Các kiểu quy tắc này cũng được sử dụng để tìm kiếm các bugs có khả năng xảy ra, ví dụ như là so sánh đối tượng được autoboxed để lấy đẳng thức tham chiếu, ví dụ như sử dụng == trên các giá trị gốc đã được autoboxed vào các đối tượng tham chiếu.

Không may là các IDE hiện đại không đòi hỏi chúng ta nỗ lực đầu tư để học hỏi cách sử dụng chúng. Khi tôi lập trình C lần đầu tiên trên hệ điều hành Unix, tôi đã phải dành khá nhiều thời gian để học về cách thức chương trình vi hoạt động, vì “đường cong học tập” của nó khá dốc. Khoảng thời gian này đã được trả lại hết sau nhiều năm. Tôi thậm chí vẫn đang gõ bản nháp của chủ đề này với vi. IDE hiện đại có một “ đường cong học tập” rất chậm rãi, là thứ có tác động chúng rằng ta sẽ không bao giờ tiến bộ vượt quá mức sử dụng cơ bản của các công cụ.

Bước đầu tiên của tôi trong việc nghiên cứu về IDE là học thuộc lòng các phím tắt. Khi đặt tay lên bàn phím để gõ code, tôi sẽ nhấn tổ hợp phím Ctrl+Shift+I để inline các bản lưu có thể thay đổi khỏi việc ngắt dòng, trong khi chuyển sang điều khiển menu thông qua chuột để ngắt dòng. Những sự gián đoạn dòng đó dẫn đến các sự chuyển đổi ngữ cảnh không cần thiết và sẽ làm giảm bớt năng suất của tôi nếu tôi cố gắng để làm mọi thứ theo cách chậm chạp. Quy định giống nhau cũng áp dụng cho các kĩ thuật gõ phím. Hãy học hỏi để đạt đến sự mẫu mực, bạn sẽ không phải hối tiếc về khoảng thời gian đã bỏ ra cho việc đó.

Cuối cùng, với tư cách là một lập trình viên, chúng ta có thời gian chứng tỏ rằng công cụ phát trực tuyến của Unix có thể giúp ta vận dụng cho code. Ví dụ trong lúc xem xét lại các đoạn code, tôi đã để ý rằng các lập trình viên đã đặt tên rất nhiều class giống nhau, và ta có thể tìm được chúng một cách dễ dàng thông qua các công cụ như find, sed, sort, uniq và grep, giống như mô tả dưới đây:

find . -name "*.java" | sed 's/.*\///' | sort | uniq -c | grep -v "^ *1 " | sort –r

Chúng ta đều biết rằng một người thợ sửa ống nước đến nhà có thể sử dụng thành thạo đèn hàn của anh ấy. Hãy dành ra một ít thời gian để học cách trở nên thành thạo với IDE của mỗi chúng ta.