
学校で習う奇妙な英語
had better は「〜した方がいい」と長年習ってきたが、had better は親や上司が子供や部下に対して使う表現で「〜した方がいい、さもないと」という強制的な意味が含まれているので、相手に対する提言を含む表現としては should の方が相応しい。
You had better do it at once.
これは「あなたはそれをさっさとやったほうがいいですよ。」と学校では習いましたが、実は、「あなたはそれをさっさとやりなさい。」という強制・命令の意味が強くなります。
「〜したほうがいいですよ」と提言をしたい場合は、 had better よりむしろ, should を使う方が自然。
You should do it at once.