1. 次の関数は、バリデーション・保存・画面遷移までを1つに詰め込んだ例です。KISSの観点から、最も優先して行うべき改善はどれでしょうか?
function submitForm(data) {
// 入力チェック
if (!data.name) {
alert('名前は必須です');
return;
}
if (!data.email) {
alert('メールアドレスは必須です');
return;
}
// 保存用データ整形
const payload = {
name: data.name,
email: data.email,
createdAt: new Date().toISOString()
};
// 保存API
fetch('/api/contacts', {
method: 'POST',
body: JSON.stringify(payload)
}).then(() => {
alert('送信しました');
location.href = '/thanks';
}).catch(() => {
alert('送信に失敗しました');
});
}
function submitForm(data) {
// 入力チェック
if (!data.name) {
alert('名前は必須です');
return;
}
if (!data.email) {
alert('メールアドレスは必須です');
return;
}
// 保存用データ整形
const payload = {
name: data.name,
email: data.email,
createdAt: new Date().toISOString()
};
// 保存API
fetch('/api/contacts', {
method: 'POST',
body: JSON.stringify(payload)
}).then(() => {
alert('送信しました');
location.href = '/thanks';
}).catch(() => {
alert('送信に失敗しました');
});
}
KISSの観点からは、責務ごとに小さな関数に分割して、読みやすく・テストしやすい形にすることが重要です。