Trong Python (và đôi khi là PHP) khi các biến không có kiểu cố định, tôi sẽ thường xuyên thực hiện 'biến đổi kiểu' trên một phần của biến thông qua logic của mã của tôi. Tôi không (nhất thiết) nói về các phôi đơn giản, nhưng về các hàm thay đổi loại biến trong khi về cơ bản nó đại diện cho cùng một giá trị hoặc dữ liệu.
Ví dụ: tôi có thể viết mã như thế này khi thực hiện một yêu cầu web, sử dụng response
biến để lưu trữ một đối tượng addurlinfo, sau đó là nội dung chuỗi của đối tượng đó và từ điển được trả về bằng cách phân tích chuỗi dưới dạng JSON:
response = urlopen(some_url)
assert response.info().type == 'application/json'
response = response.read()
logger.debug('Received following JSON response: ' + response)
response = json.loads(response)
do_something(response)
(Được rồi, đó là một ví dụ hơi khó hiểu, nhưng tôi nghĩ nó thể hiện ý tưởng tốt). Cảm giác của tôi là điều này tốt hơn so với việc sử dụng ba tên biến riêng biệt bởi vì a) nó truyền tải rằng response
biến đó chứa thông tin cơ bản giống nhau, chỉ "biến đổi" thành một loại khác và b) nó truyền tải rằng các đối tượng trước đó sẽ không không cần thiết nữa, vì bằng cách gán lại biến của chúng, tôi đã làm cho chúng không có sẵn cho mã sau này.
Sự đánh đổi, tôi đoán, là người đọc có thể trở nên bối rối về loại biến là gì tại bất kỳ thời điểm nào.
Đây có phải là phong cách xấu và tôi có nên sử dụng ba biến khác nhau trong ví dụ trên thay vì gán lại cho một biến không? Ngoài ra, đây có phải là tiêu chuẩn thực hành trong các ngôn ngữ gõ động, hay không? Tôi chưa thấy đủ mã của người khác để biết.
response_addurlinfo
,response_str
,response_dict
) là xấu xí vẫn còn. Bạn làm nghề gì?