Комментарии 2
У меня тоже, стандартная библиотека для работы с файлами вызывает каждый раз неприятные ощущения.
Не понял преимуществ в задании пути как свойств объекта. По мне так, вариант
path.join(__dirname, 'node_modules/fstb/package.json')
выглядит лучше и понятнее, чем ваш вариант
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]
К тому же в первом случае IDE может подсказать путь и результат типизирован.
fstb.cwd.node_modules.unlink()
Вызов функции для получения объекта пути, создает дополнительную когнитивную нагрузку и подвержен ошибкам. В примере выше многие, при чтении кода, будут спотыкаться о вызов метода unlink(), так как, ожидается, что происходит удаление.
asFile().read.lineByLine()
asFile().write.txt(string_to_write);
Так же, странно видеть атрибуты read и write, лучше либо переименовать на более очевидное, либо сделать их методами. Почему бы сразу не сделать readLineByLine() и writeText()?
+2
Не понял преимуществ в задании пути как свойств объекта
path.join классная штука, всегда ей пользуйтесь при работе путями )). Но вот в чем дело, эта ваша строка кода:
path.join(__dirname, 'node_modules/fstb/package.json')
у нее нет продолжения. Ибо join вернет строку, а вам то надо работать с файлом. И теперь надо эту строку передать каким-то образом в метод из fs.
const package_json_path = path.join(__dirname, 'node_modules/fstb/package.json');
fs.stat(package_json_path, (err, stat) => console.log(stat.size));
//либо (ну так вообще никто никогда не делает, да?):
fs.stat(path.join(__dirname, 'node_modules/fstb/package.json'), (err, stat) => console.log(stat.size))
А вот этот код:
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]
он может быть завершен как инструкция что надо сделать с файлом.
Вот так, например:
FSPath(__dirname)["node_modules"]["fstb"]["package.json"]()
.asFile().stat().then((stat => console.log(stat.size)))
Тут вы прочитаете всю историю куда пойти, что там лежит и что с этим надо сделать. Слева на право, сверху вниз.
Если вам не нравится вариант заменить сегменты на свойства, можно написать вот так:
FSPath(__dirname)["node_modules/fstb/package.json"]
Кстати, подали мне идею, сделаю, чтобы можно было вообще писать вот так:
FSPath(__dirname, "node_modules/fstb/package.json")
Так что спасибо за критику.
Вызов функции для получения объекта пути, создает дополнительную когнитивную нагрузку и подвержен ошибкам. В примере выше многие, при чтении кода, будут спотыкаться о вызов метода unlink(), так как, ожидается, что происходит удаление.
Тут да, есть такое дело, я про этот недостаток писал в конце.
Так же, странно видеть атрибуты read и write, лучше либо переименовать на более очевидное, либо сделать их методами. Почему бы сразу не сделать readLineByLine() и writeText()?
Тут есть ряд причин, почему сделано именно так:
Во-первых, если их сделать методами, то будет путаница, потому что у модуля fs есть методы read и write будет с ними путаница.
Во-вторых хотелось разгрузить подсказку от портянки методов. Когнитивная нагрузка, помните? Если все, что можно делать с файлами в один список положить получится длинная портянка, пусть даже и структурированная по префиксам названий методов как вы предлагаете, так что нет, не вижу смысла делать, так как вы предлагаете. Думал об этом довольно долго, но в итоге решил сделать как есть сейчас.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
FSTB – работа с файлами в Node.js без боли