Redirect http to https, non-www to www and "/index.php" to "/"
Keep your code consistent. If you are using RewriteRule, use the same capitalisation format in all declarations. Same for setting the flags (R, L, NC etc.); or the variables and so on.

I personally prefer to give an extra newline between any new set of RewriteCond segment, so that I would be able to easily identify groups later on. As well as, adding comments never hurt anybody.

Prefer to handle the requests/paths at as late stage as possible.

Lastly, if you have just one domain name to handle; you can merge the https and naked-domain rules in a single one. The final ruleset would be:

Options +FollowSymlinks

RewriteEngine On

RewriteCond %{HTTPS} off [NC,OR]
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [R=301,L]

RewriteCond %{THE_REQUEST} ^.*/index\.php [NC]
RewriteRule ^(.*)index\.php$ https://www.example.com/$1 [R=301,L]