28 Bình luận
  • huynq0410
    Woa! Lần đầu thấy bài về coding lên hot trên linkgay
  • serverless
    giờ typescript 1 superset của js đang là trend.
    • PythonGable
      @serverless thấy nó không đáng để làm cái Type trên JS. Thay vì thời gian đó, viết unit testing thì khoẻ hơn.
    • minister
      @pythongable làm mấy món to to, xài dynamic typed thì chết. đọc code mà ko có doc thì là như mù

      ts giờ compile về native đc rồi nên ko gọi là superset nữa.
      còn về phạm trù ngôn ngữ thì vẫn lom dom
    • PythonGable
      @minister mình thì hay xem Unit testing như docunent. Integration testing như là interface. E2E là feature app + requirement.
    • serverless
      @minister vụ TS về native thì mình ko biết.
    • minister
      @pythongable unit test với mình ko giải quyết dc vấn đề, nó không giúp đọc hiểu code.
      2 thứ # nhau.

      Mấy ô xài js, rất hay pass object vào làm parameter, và object đó bao gồm những gì thì không định rõ.
      mọi thứ đều là optional, không kiểm soát dc input output.

      mấy cái lib 15k star trên git cho React cũng code như vậy.

      @serverless bác kiếm Deno do Ryan Dahl code thay cho NodeJS, cũng mới thôi
      http://tinyurl.com/yxrpmxcj

      Link bài:
      10 Things I Regret About Node.js — Ryan Dahl
      http://tinyurl.com/yxk2xnxs

      JavaScript is nice. Dynamic languages may not suit for building a server, in which you want to control everything, but are the right tool for prototyping, for example, scientific computing. JavaScript is the best dynamic language.


       Ryan Dahl là ai thì bạn Google
    • PythonGable
      @minister Vậy Type giúp bạn hiểu code hơn?
    • minister
      @pythongable chắc bạn chưa code static typed bao giờ?
      coi nick chắc bạn biết Python, nếu dynamic typed là đủ tốt Guido van Rossum đã không add type hinting vào Python.

      http://tinyurl.com/n3677vp
      https://www.youtube.com/watch?v=GiZKuyLKvAA

      Python is a dynamically typed language, and some of its appeal derives from this. Nevertheless, especially for large code bases, it would be nice if a compiler could find type errors before the code is even run.
    • PythonGable
      @minister Mình có dùng thử. Nhưng bạn lại nguỵ biện là Type nó tốt hơn Unittest về đọc hiểu code?
      Type nó là type, strict về data type và typing. Chả liên quan về việc đọc hiểu và "pass object vào làm parameter.."
      Quan điểm mình là type nó tốt cho những cái precompile và compile. Chứ không phải là không, nhưng ở JS-frontend là dư thừa.
    • PythonGable
      @pythongable Nếu bạn define tốt interface function, thì chả việc gì phải dùng type. Và strict cái function output đó = unittest thì cũng chả còn gì để phải dùng type trong khi unit testing đã làm tốt phần đó.
      Câu hỏi đặt ra là có đáng hay không khi dành thời gian define đống type kia.
    • thinker
      Mấy cái này như là tôn giáo ấy mà các bác. Chỉ riêng chuyện dùng tab hay space cũng đã cãi nhau cả thế kỉ nay chả là type hay ko type, static hay dynamic. It is a trade-off.
    • serverless
      @pythongable đáng nhé bạn, nếu muốn làm sản phẩm lâu dài.
    • PythonGable
      @serverless . Lâu dài chả liên quan gì type và none type, nó là về planning.

      @thinker Ừhm, nhưng mà đừng thần thánh hoá là TypeS hơn những cái căn bản về coding khác.
    • minister
      @pythongable khi bạn code dynamic, declare 1 variable không có type, nó đã ảnh huởng tới việc đọc hiểu rồi.
      nó là gì? int, string, object? nó sẽ có những property nào? có method gì? bạn nói đc ra ngay khi bạn thấy nó ko?

      với dynamic typed thì 1 biến đuợc định rõ kiểu, là list sẽ có append, là object sẽ có method gì.
      về cơ bản bạn xài 1 text editor cũng hỗ trợ tốt intellisense vì nó đã có đuợc type của biến để đưa ra suggestion.
      như Golang hay Dart ko cần tới 1 IDE để có đuợc intellisense 1 cách hoàn hảo, VSCode là quá đủ.

      mời thím nhé coi có ảnh huởng tới khả năng đọc hiểu không
      http://tinyurl.com/y3dn22wu

      Advantages of statically-typed languages:
      Better code completion.

      Better performance (type constraints offer more opportunities for compiler optimizations).

      You can get hints and documentation inside your IDE while you code. This reduces the likelihood of making incorrect assumptions about the behavior of specific functions/methods.

      It’s easier to find things. For any variable or function, you can easily jump to its class definition without leaving the IDE and without having to know anything about the directory structure of the project. Conversely, for any class or function definition, you can easily and unambiguously
      see where that class or function is used in your code and jump to it without leaving the IDE. (Statically typed languages make it easier for IDEs to do this).



      nc là khi cha đẻ của NodeJS và author của Python đã lên tiếng mà bạn vẫn ếu nghe thì đó là chuyện của bạn, lol
    • PythonGable
      @minister vấn đề là JS nó là non type.
      Chứ mình chả nói là type lang là không tốt. Mình đang nói TypeScript.
    • kspm
      @minister nghe có vẻ như bác luôn nhìn type của biến mà ít quan tâm đến biến đó có vai trò gìpp. Thực ra có thể đoán được nó là kiểu gì khi nhìn vào giá trị gán cho nó, và mình dùng unit test để enforce cái giá trị đó ( có thể là object hoặc hàm trả về hoặc callback ...) phải thoả mãn yêu cầu logic là vẫn ngon, chả cần xài strongly type.

      Còn các cao thủ trên thế giới nâng bi type thì em nghĩ họ dựa vào lý do khác, chứ ko phải dễ đọc.
    • thinker
      @pythongable mình thấy type (và những thứ tương tự) giúp vẽ sẵn đường cho mọi người chạy, thích hợp với những dự án lớn, trình độ dev ko đồng đều, tránh được cảnh người này làm khổ người kia. Còn dynamic phù hợp với mấy ông guru làm độc lập hoặc team nhỏ toàn người cứng - khi đó thấy type giống kiểu xôi thì ít mà lá thì nhiều - waste time giảm năng suất.
    • Nccnm
      @thinker ý kiến này hợp lý này.
      Nếu như đang dùng plain JS quen rồi chuyển qua TypeScript thì cảm thấy như bị buộc chân buộc tay lại. Nhưng trong 1 project lớn nhiều dev thì dùng TypeScript cực kỳ hữu ích.

      Giả sử như có 1 function save(customer) {...} Ko đọc code của save thì có khi không biết customer phải có nhưng properties gì. Còn nếu dùng TypeScript thì mọi chuyện đơn giản hơn thì thêm cái type Customer vào : function save(customer:Customer) {...}. Điều này giúp code readable hơn.

      Ngoài ra TypeScript giúp làm tool refactor dễ hơn rất nhiều. Đặc biệt là rename: nhanh, gọn và giúp dev cảm thấy tự tin hơn.

      Còn việc cãi nhau Type vs Non-Type thì cũng y như cãi nhau giữa C# và Java vậy. Trăm năm nữa cũng ko hết.
    • PythonGable
      @nccnm Bạn có thể thay từ typescript đó = unit testing.
    • serverless
      @pythongable ko phải thần thánh hóa, ts chỉ là công cụ để bù đắp cái đang thiếu của js. Ví dụ trc đó chẳng phải dân code react hay xài PropType để define type cho props của component ah?
    • kipu
      @minister Em đồng ý với bác, code TypeScript quen rồi, nhìn code không TypeScript như đống ****
    • Nccnm
      @pythongable bác cũng đang thần thánh hoá unit test rồi. Viết unit test để cover tất cả các các case cho type là một việc ko đáng tốn công sức. Hãy để việc đó cho compiler. Đó là việc chân tay. Đầu để nghĩ việc khác đi bác. Hơn nữa viết unit test để có đc 100% code coverage là cực khó, mất rất nhiều công sức, hầu như chẳng dự án nào thực hiện được.

      Việc đọc code có type hiểu nhanh hơn rất nhiều so với unit test. Nếu trình bác cao và dư thời gian thì cứ hãy viết unit test cho full code coverage.
    • minister
      @nccnm m code 5 năm php xong mới chuyển qua 1 số ngôn ngữ static typed #.
      công nhận ban đầu chuyển khó, code rối hơn, dài hơn nhưng về cơ bản trong sáng hơn và rất khoẻ khi đã qua đc rồi. design pattern cũng tốt hơn, cấu trúc code chắc chắn hơn.

      hiện vẫn xài dynamic typed + type hinting cho mấy con nhỏ cần làm nhanh, các con to thì static.
      Python khi có type hinting vs mình là vô cùng tuyệt vời. Code vừa nhanh, nó lại strong typed, nhiều tính năng ảo diệu so với các em khác.

      nguợc lại 1 em static typed mình lại rất ghét đó là Java, với mình là quá dài dòng.
    • thinker
      @minister nếu ko muốn ts có thể dùng flow, nhưng community nhỏ hơn nên có vẻ down
    • serverless
      @thinker flow chỉ có anh em bên react quan tâm thôi
  • TrNgo
    Cơ bản es6 dùng cũng lâu lâu rồi
  • jack2018
    Mình chỉ quan tâm độ tương thích, code kiểu gì cũng có cái hay của nó nhưng mà dễ debug như trong bài viết thì mình không đồng ý lắm. Dù sao cũng ủng hộ ES6
Website liên kết