Tôi bắt đầu viết mã bằng F # khoảng 2 tháng trước.Câu hỏi về chất lượng câu hỏi F #
Tôi rất thích thú với ngôn ngữ lập trình này. Tôi đến từ một nền C#, và mỗi khi tôi cần phải quay trở lại C#, nó cảm thấy rất cồng kềnh và cồng kềnh.
Nhưng vẫn có những điều tôi nghĩ là có vấn đề trong F #, và đây là những gì câu hỏi của tôi có liên quan đến:
Không có tự động hoàn thành như VS có cho C# đúng không? Ví dụ. bên trong một hàm nhận tham số aParameter, nếu tôi viết aPara no auto complete sẽ xuất hiện. Có một chức năng bên trong VS có thể giải quyết vấn đề này và tôi không biết?
Gỡ lỗi là tẻ nhạt để nói ít nhất. Vì F # hỗ trợ đường ống/chuỗi hoặc bất cứ điều gì bạn muốn gọi nó, tôi thường cố gắng để chuỗi càng nhiều thứ càng tốt (bất cứ nơi nào nó có ý nghĩa tất nhiên). Ví dụ:
correctedData |> List.filter (fun (_, r, _) -> r <= 3) |> Seq.ofList |> Seq.groupBy (fun (_, r, cti) -> (r,cti)) |> Seq.map (fun ((r,cti),xs) -> (r, cti, Seq.length xs)) |> Seq.toList
Và đây chỉ là phần tư toàn chaining tôi thực hiện. Bất cứ khi nào tôi mess một cái gì đó lên trong các chuỗi, tôi tìm thấy nó rất rất khó để gỡ lỗi, nơi tất cả đã đi sai.
Tôi có đang làm sai chuỗi này (lạm dụng nó) không? Theo quan điểm của tôi, không có gì trung gian từ chuỗi này có ý nghĩa tồn tại một cách nguyên tử, do đó không có lý do gì để có giá trị trung gian. Nhưng vì quan điểm ngữ nghĩa này, tôi cũng mất đi sức mạnh của việc có các giá trị trung gian giúp tôi gỡ lỗi. Vì vậy, sau đó tôi phải chèn chúng vào mã, gỡ lỗi, sau đó loại bỏ chúng một lần nữa. Nhưng đây là một nỗ lực lãng phí. Có cách nào để khắc phục điều này?
Ngoài ra, gỡ lỗi chức năng ẩn danh List.map bên trong một chuỗi cảm thấy một lần nữa khó xử và khó so với ví dụ: một vòng lặp for.
Tôi chắc chắn rằng tôi đang thiếu thứ gì đó và cách gỡ lỗi hiện tại của tôi có lẽ không tối ưu - không phải bởi một cảnh quay dài - vì vậy mọi đề xuất đều được hoan nghênh.
Gắn thẻ câu hỏi của bạn với ấn bản VS, điều này dường như bao gồm câu hỏi đầu tiên của bạn: https://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/2149735-improve-intellisense-support-for-f –
Tôi e rằng nó không chỉ là F # - hỗ trợ gỡ lỗi thường không phải là rất tốt với các ngôn ngữ chức năng. Thay vào đó, bạn được khuyến khích xây dựng mã của bạn từ những phần nhỏ mà bạn có thể kiểm tra độc lập - và tương tác. Trọng tâm là nhiều hơn vào việc làm cho nó ngay ở nơi đầu tiên, chứ không phải là sửa chữa các vấn đề khi họ cắt lên trong một trình gỡ lỗi. Thêm các thông báo lỗi có phần khó hiểu và rất nhiều lợi ích về năng suất biến mất cực nhanh nếu bạn không cẩn thận ngay từ đầu. Ví dụ của bạn với chuỗi cũng áp dụng cho phương pháp LINQ của C# - và một lần nữa, đó là về việc đảm bảo công việc * miếng *. – Luaan