jsで要素の高さを計算する処理を純粋関数型っぽく書きたいとき
普通に書くならこう
const calculateHogeSize = () => {
return $('.js-hoge').innerHeight() - ($('.js-foo').innerHeight() + $('.js-fuga').innerHeight() + parseInt($('.js-bar').css('margin-top')) + 50);
};
$(window).on('resize', () => {
const hogeSize = calculateHogeSize();
$('.js-target').css({height: hogeSize});
});
テスタブルに書くならこう?
const calculateHogeSize = (hogeSize, fooSize, fugaSize, barMargin) => {
return hogeSize - (fooSize + fugaSize + barMargin + 50);
};
$(window).on('resize', () => {
const hogeSize = $('.js-hoge').innerHeight();
const fooSize = $('.js-foo').innerHeight();
const fugaSize = $('.js-fuga').innerHeight();
const barMargin = parseInt($('.js-bar').css('margin-top'));
const hogeSize = calculateHogeSize(hogeSize, fooSize, fugaSize, barMargin);
$('.js-target').css({height: hogeSize});
});
意図したこと
calculateHogeSize
関数をテストしやすい