Tôi đã thấy một bình luận / nhận xét trong đó nó đã nêu điều gì đó - liên quan đến LINQ / lambda - dọc theo dòng: "Viết mã có thể đọc được cho con người, thay vì có thể đọc được trên máy tính của bạn".
Tôi nghĩ rằng tuyên bố này có rất nhiều giá trị, tuy nhiên, hãy xem xét nhà phát triển (chẳng hạn như tôi), người đã trải qua toàn bộ các ngôn ngữ phát triển từ hội, thông qua thủ tục, thông qua OO, thông qua quản lý, thông qua các giải pháp song song nhiệm vụ thông lượng cao .
Tôi đã tự hào về việc làm cho mã của mình dễ đọc và có thể tái sử dụng nhất có thể và áp dụng nhiều nguyên tắc mẫu thiết kế GOF để cung cấp các hệ thống và dịch vụ chất lượng sản xuất trên nhiều lĩnh vực kinh doanh khác nhau.
Lần đầu tiên tôi bắt gặp biểu cảm lambda tôi đã nghĩ: "Cái quái gì thế!? Nó ngay lập tức phản trực giác với cú pháp khai báo rõ ràng (và do đó thoải mái) quen thuộc của tôi . Tuy nhiên, những người trẻ hơn 5 tuổi trong công việc đã đưa nó lên như thể đó là manna từ thiên đường!
Đó là bởi vì trong nhiều năm suy nghĩ như một máy tính (theo nghĩa cú pháp) đã dịch rất dễ dàng thành cú pháp mã hóa trực tiếp (không phân biệt ngôn ngữ). Khi bạn có tư duy tính toán cho khoảng 20+ năm (30+ trong trường hợp của tôi), bạn phải đánh giá cao cú sốc cú pháp ban đầu của biểu thức lambda có thể dễ dàng chuyển thành sợ hãi và ngờ vực.
Có lẽ đồng nghiệp trong OP đã đến từ một nền tảng tương tự như tôi (tức là đã ở quanh khối một vài lần) và nó phản tác dụng với họ vào thời điểm đó? Câu hỏi của tôi là: bạn đã làm gì về nó? Bạn đã cố gắng giáo dục lại đồng nghiệp của mình để hiểu được lợi ích của cú pháp nội tuyến hay bạn đã cố chấp / tẩy chay họ vì đã không "đồng hành cùng chương trình"? Người trước có thể đã thấy đồng nghiệp của bạn đi theo lối suy nghĩ của bạn, người sau có thể sẽ khiến họ không tin vào cú pháp LINQ / lambda hơn nữa và do đó làm trầm trọng thêm ý kiến tiêu cực.
Đối với bản thân tôi, tôi đã phải giáo dục lại cách suy nghĩ của riêng mình (như Eric nói ở trên, đó không phải là một sự thay đổi tâm trí không đáng kể và tôi phải lập trình ở Miranda vào những năm 80 vì vậy tôi đã chia sẻ kinh nghiệm lập trình chức năng của mình) nhưng một khi tôi đã trải qua nỗi đau đó thì lợi ích là rõ ràng nhưng - quan trọng hơn - khi sử dụng nó đã được sử dụng quá mức (nghĩa là được sử dụng cho mục đích sử dụng nó), qua sự phức tạp và lặp đi lặp lại (xem xét nguyên tắc DRY trong trường hợp đó).
Là một người không chỉ viết nhiều mã mà còn phải xem xét kỹ về nhiều mã, điều bắt buộc là tôi phải hiểu các nguyên tắc này để tôi có thể xem xét các mục một cách vô tư, khuyên rằng việc sử dụng biểu thức lambda có thể hiệu quả hơn / có thể đọc được và cũng để khiến các nhà phát triển xem xét khả năng đọc của các biểu thức lambda nội tuyến rất phức tạp (trong đó một lệnh gọi phương thức - trong các trường hợp đó - làm cho mã dễ đọc hơn, có thể duy trì và mở rộng hơn).
Vì vậy, khi ai đó nói rằng họ "Đừng lấy lambda?" hoặc cú pháp LINQ, thay vì đặt thương hiệu cho họ một luddite cố gắng giúp họ hiểu các nguyên tắc cơ bản. Rốt cuộc họ có thể có một nền tảng "trường học cũ" như tôi.