Nếu một hàm lấy làm đầu vào tên của tệp văn bản, tôi có thể cấu trúc lại để thay thế đối tượng tệp (tôi gọi nó là "luồng"; có từ nào tốt hơn không?). Những lợi thế là hiển nhiên - một chức năng mà phải mất một dòng như một cuộc tranh cãi là:tên tệp vs đối tượng tệp làm đối số hàm
- dễ dàng hơn nhiều để viết một bài kiểm tra đơn vị cho, vì tôi không cần phải tạo ra một tập tin tạm thời chỉ cho kỳ thi này
- hơn linh hoạt, vì tôi có thể sử dụng nó trong các tình huống mà bằng cách nào đó tôi đã có nội dung của tệp trong một biến
Có bất kỳ bất lợi nào đối với luồng không? Hoặc tôi nên luôn luôn refactor một chức năng từ một đối số tên tập tin cho một đối số dòng (giả sử, tất nhiên, tập tin là chỉ văn bản)?
Có, khi tôi nói "luồng", tôi có nghĩa là "đối tượng tệp mở". Nó sẽ không thể viết một trang trí giúp tiết kiệm và phục hồi trạng thái luồng? – max
Và không có cách nào để tạo bản sao rẻ tiền của luồng, sao cho bản sao sở hữu "con trỏ" của riêng mình, trong khi "con trỏ" của luồng gốc bị bỏ hoang? Điều đó sẽ thậm chí còn sạch hơn so với lưu/khôi phục lại cách tiếp cận trạng thái. – max
@max - Chắc chắn, bạn có thể viết một trang trí để làm điều đó. Điều quan trọng là ghi lại tài liệu khi bạn khôi phục lại trạng thái và khi bạn không ở trạng thái đó. Theo như tạo ra một bản sao, điều duy nhất tôi có thể nghĩ đến là 'itertools.tee', có một chút khác biệt (nhưng nó đã vượt qua giờ đi ngủ bình thường của tôi, vì vậy tôi không đảm bảo bất cứ điều gì mà tôi gõ ngay bây giờ: ^). – mgilson