When you declare a function as 'write' is it necessary to declare it as 'read' also?

while defining abi, in my smart contract.

Not necessarily. You are able to declare an ABI method that only has #[storage(write)]. Such a method is not allowed to read from storage.

We also need to strengthen learning and deployment